<?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>122656</bug_id>
          
          <creation_ts>2013-10-11 10:10:21 -0700</creation_ts>
          <short_desc>Separate out array iteration intrinsics</short_desc>
          <delta_ts>2013-10-14 14:07:11 -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>JavaScriptCore</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>
          <dependson>122671</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>938842</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-11 10:10:21 -0700</bug_when>
    <thetext>Separate out array iteration intrinsics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938846</commentid>
    <comment_count>1</comment_count>
      <attachid>213997</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-11 10:15:14 -0700</bug_when>
    <thetext>Created attachment 213997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938847</commentid>
    <comment_count>2</comment_count>
      <attachid>213998</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-11 10:16:21 -0700</bug_when>
    <thetext>Created attachment 213998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938854</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-11 10:29:22 -0700</bug_when>
    <thetext>Committed r157307: &lt;http://trac.webkit.org/changeset/157307&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938925</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-11 12:11:20 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 122671</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938978</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-11 15:01:32 -0700</bug_when>
    <thetext>Rolled out in &lt;http://trac.webkit.org/changeset/157317&gt; for having caused many assertions failures.

http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK1%20%28Tests%29/builds/10711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939632</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-14 14:07:11 -0700</bug_when>
    <thetext>Committed r157420: &lt;http://trac.webkit.org/changeset/157420&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213997</attachid>
            <date>2013-10-11 10:15:14 -0700</date>
            <delta_ts>2013-10-11 10:16:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122656-20131011101516.patch</filename>
            <type>text/plain</type>
            <size>16873</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDEwYzA5NWVjZjc1NTMxOGQxYTMxZTE1MGQ1MzFlYmQ4ODE1M2M1Li4wMDM0NWM3MjYzMWY5OThi
NzBmYjQ5MWQxMmViMjc2MDBjZmIzZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxMy0xMC0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFNlcGFyYXRlIG91dCBhcnJheSBpdGVyYXRpb24gaW50cmluc2ljcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNjU2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VwYXJhdGUgb3V0IHRo
ZSBpbnRyaW5zaWNzIGZvciBrZXkgYW5kIHZhbHVlcyBpdGVyYXRpb24KKyAgICAgICAgb2YgYXJy
YXlzLgorCisgICAgICAgIFRoaXMgcmVxdWlyZXMgbW92aW5nIG1vdmluZyBhcnJheSBpdGVyYXRp
b24gaW50byB0aGUgaXRlcmF0b3IKKyAgICAgICAgaW5zdGFuY2UsIHJhdGhlciB0aGFuIHRoZSBw
cm90b3R5cGUsIGJ1dCB0aGlzIGlzIGVzc2VudGlhbGx5CisgICAgICAgIHVub2JzZXJ2YWJsZSBz
byB3ZSdsbCBsaXZlIHdpdGggaXQgZm9yIG5vdy4KKworICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6YXJyYXlJdGVyYXRvck5leHRLZXlUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VmFsdWVUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlJdGVy
YXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5SXRlcmF0b3JQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUl0
ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZUl0ZXJhdG9yUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6YXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQpOgorICAgICAg
ICAoSlNDOjphcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dEtleSk6CisgICAgICAgIChKU0M6OmFy
cmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0VmFsdWUpOgorICAgICAgICAoSlNDOjphcnJheUl0ZXJh
dG9yUHJvdG90eXBlTmV4dEdlbmVyaWMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjp0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyk6CisKIDIwMTMtMTAtMDkgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGdXJ0aGVyIGltcHJvdmUg
QXJyYXlJdGVyYXRvciBwZXJmb3JtYW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDMxYjAxYmI3MjcxNjU1YjgwMDU4YjQ5ODdkNmY5NTY2
NjVlOWY3NWMuLjlkMGVkMDRhMzBiZmIxYTc3ODkwNGRkM2Y2ZTNhOGQyY2VkNGVkZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTk4OCw3
ICs5ODgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2
bSksICJpbXVsIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcnJheUl0ZXJhdG9yTmV4
dFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJy
YXlJdGVyYXRvck5leHRUaHVua0dlbmVyYXRvcihWTSogdm0sIEFycmF5SXRlcmF0aW9uS2luZCBr
aW5kKQogewogICAgIHR5cGVkZWYgU3BlY2lhbGl6ZWRUaHVua0pJVDo6VHJ1c3RlZEltbTMyIFRy
dXN0ZWRJbW0zMjsKICAgICB0eXBlZGVmIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRydXN0ZWRJbW1Q
dHIgVHJ1c3RlZEltbVB0cjsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBhcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICBqaXQubG9h
ZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7CiAgICAgCiAgICAgaml0
LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QzKTsKLSAgICAKKwogICAgIEp1bXAgbm90RG9uZSA9IGppdC5icmFuY2gzMihTcGVj
aWFsaXplZFRodW5rSklUOjpCZWxvdywgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIEFkZHJl
c3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNM
ZW5ndGgoKSkpOwogICAgIC8vIFJldHVybiB0aGUgdGVybWluYXRpb24gc2lnbmFsIHRvIGluZGlj
YXRlIHRoYXQgd2UndmUgZmluaXNoZWQKICAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKHZtLT5p
dGVyYXRpb25UZXJtaW5hdG9yLmdldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpA
QCAtMTAyMiwxNCArMTAyMiwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXRv
ck5leHRUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgCiAgICAgbm90RG9uZS5saW5rKCZqaXQp
OwogICAgIAotICAgIAotICAgIEp1bXAgbm90S2V5ID0gaml0LmJyYW5jaDMyKFNwZWNpYWxpemVk
VGh1bmtKSVQ6Ok5vdEVxdWFsLCBBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBK
U0FycmF5SXRlcmF0b3I6Om9mZnNldE9mSXRlcmF0aW9uS2luZCgpKSwgVHJ1c3RlZEltbTMyKEFy
cmF5SXRlcmF0ZUtleSkpOwotICAgIC8vIElmIHdlJ3JlIGRvaW5nIGtleSBpdGVyYXRpb24gd2Ug
anVzdCBuZWVkIHRvIGluY3JlbWVudCBtX25leHRJbmRleCBhbmQgcmV0dXJuIHRoZSBjdXJyZW50
IHZhbHVlCi0gICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSk7
Ci0gICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKLSAgICAK
LSAgICBub3RLZXkubGluaygmaml0KTsKLSAgICAKKyAgICBpZiAoa2luZCA9PSBBcnJheUl0ZXJh
dGVLZXkpIHsKKyAgICAgICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRl
eCgpKSk7CisgICAgICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MSk7CisgICAgICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVD
YWxsKHZtKSwgImFycmF5LWl0ZXJhdG9yLW5leHQta2V5Iik7CisgICAgICAgIAorICAgIH0KKyAg
ICBBU1NFUlQoa2luZCA9PSBBcnJheUl0ZXJhdGVLZXlWYWx1ZSk7CiAgICAgCiAgICAgLy8gT2th
eSwgbm93IHdlJ3JlIHJldHVybmluZyBhIHZhbHVlIHNvIG1ha2Ugc3VyZSB3ZSdyZSBpbnNpZGUg
dGhlIHZlY3RvciBzaXplCiAgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaDMyKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OkFib3ZlT3JFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEs
IEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZW
ZWN0b3JMZW5ndGgoKSkpKTsKQEAgLTEwNzcsNyArMTA3NiwxNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgYXJyYXlJdGVyYXRvck5leHRUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgaml0LmFk
ZDMyKFRydXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwg
SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSk7CiAgICAgaml0LnJldHVybkRv
dWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKICAgICAKLSAgICByZXR1cm4gaml0
LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJhcnJheS1pdGVyYXRv
ci1uZXh0Iik7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2
ZUNhbGwodm0pLCAiYXJyYXktaXRlcmF0b3ItbmV4dC12YWx1ZSIpOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgYXJyYXlJdGVyYXRvck5leHRLZXlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7
CisgICAgcmV0dXJuIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5lcmF0b3Iodm0sIEFycmF5SXRl
cmF0ZUtleSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcnJheUl0ZXJhdG9yTmV4dFZh
bHVlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVybiBhcnJheUl0ZXJhdG9yTmV4
dFRodW5rR2VuZXJhdG9yKHZtLCBBcnJheUl0ZXJhdGVWYWx1ZSk7CiB9CiAgICAgCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAppbmRleCA2OWRhMzlkNzNm
MmU3MDdiNDBlZTY4N2FjNjdlM2MwM2U1YmM0NmQxLi5iOGY2Y2M0OTQ4N2MyZmU0NTZkYjQ2YmRl
NjJmZjc5NTZkOGIyYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmgKQEAgLTU4LDcgKzU4LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1
bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0
b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwb3dUaHVua0dlbmVyYXRvcihWTSopOwog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBhcnJheUl0ZXJhdG9yTmV4dEtleVRodW5rR2VuZXJhdG9yKFZNKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXRvck5leHRWYWx1ZVRodW5rR2VuZXJh
dG9yKFZNKik7CiAKIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRl
eCAwODcxZGE2MzhjY2U1NDMxNTAzZjkwMmQwZmE5NWM0YmUxNTY5ZTNmLi4xY2NiNzkxYjc5MmUx
ZDY4NzkxZDJlYmU3YmVlNTU2NDBhNTE2ODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMzYsNyAr
MzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEFycmF5SXRlcmF0b3JQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIkFycmF5IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUl0ZXJhdG9yUHJvdG90eXBlKSB9OwogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4
dChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlKEV4ZWNTdGF0ZSopOwogCiB2b2lkIEFycmF5SXRlcmF0
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKQEAgLTQ1LDkwICs0NCw5IEBAIHZvaWQgQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAg
QVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5
cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvck5leHRQcml2YXRlTmFtZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZU5l
eHQsIERvbnRFbnVtLCAwLCBBcnJheUl0ZXJhdG9yTmV4dEludHJpbnNpYyk7Ci0KICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFy
cmF5SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlLCBEb250RW51bSwgMCk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBjcmVhdGVJdGVyYXRvclJlc3VsdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
QXJyYXlJdGVyYXRpb25LaW5kIGtpbmQsIHNpemVfdCBpbmRleCwgSlNWYWx1ZSByZXN1bHQsIGJv
b2wgZG9uZSkKLXsKLSAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpIC0gMSwganNCb29sZWFuKGRvbmUpKTsKLSAgICBpZiAoZG9uZSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnZtKCkuaXRlcmF0aW9uVGVybWluYXRv
ci5nZXQoKSk7Ci0KLSAgICBzd2l0Y2ggKGtpbmQgJiB+QXJyYXlJdGVyYXRlU3BhcnNlVGFnKSB7
Ci0gICAgY2FzZSBBcnJheUl0ZXJhdGVLZXk6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoaW5kZXgpKTsKLQotICAgIGNhc2UgQXJyYXlJdGVyYXRlVmFsdWU6Ci0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLQotICAgIGNhc2UgQXJyYXlJdGVy
YXRlS2V5VmFsdWU6IHsKLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICAg
ICAgYXJncy5hcHBlbmQoanNOdW1iZXIoaW5kZXgpKTsKLSAgICAgICAgYXJncy5hcHBlbmQocmVz
dWx0KTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgMCwgZ2xvYmFsT2JqZWN0LCBhcmdzKSk7Ci0KLSAg
ICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotfQotCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0KENhbGxG
cmFtZSogY2FsbEZyYW1lKQotewotICAgIEpTQXJyYXlJdGVyYXRvciogaXRlcmF0b3IgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwotICAg
IGlmICghaXRlcmF0b3IpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlM
aXRlcmFsKCJDYW5ub3QgY2FsbCBBcnJheUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1BcnJheUl0
ZXJhdG9yIG9iamVjdCIpKTsKLSAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QgPSBpdGVyYXRv
ci0+aXRlcmF0ZWRPYmplY3QoKTsKLSAgICBzaXplX3QgaW5kZXggPSBpdGVyYXRvci0+bmV4dElu
ZGV4KCk7Ci0gICAgQXJyYXlJdGVyYXRpb25LaW5kIGtpbmQgPSBpdGVyYXRvci0+aXRlcmF0aW9u
S2luZCgpOwotICAgIEpTVmFsdWUganNMZW5ndGggPSBKU1ZhbHVlKGl0ZXJhdGVkT2JqZWN0KS5n
ZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwotICAgIGlm
IChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKLQotICAgIHNpemVfdCBsZW5ndGggPSBqc0xlbmd0aC50b1VJbnQzMihj
YWxsRnJhbWUpOwotICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLQotICAgIGlmIChpbmRleCA+PSBsZW5n
dGgpIHsKLSAgICAgICAgaXRlcmF0b3ItPmZpbmlzaCgpOwotICAgICAgICByZXR1cm4gY3JlYXRl
SXRlcmF0b3JSZXN1bHQoY2FsbEZyYW1lLCBraW5kLCBpbmRleCwganNVbmRlZmluZWQoKSwgdHJ1
ZSk7Ci0gICAgfQotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGl0ZXJhdGVkT2JqZWN0LT50cnlH
ZXRJbmRleFF1aWNrbHkoaW5kZXgpKSB7Ci0gICAgICAgIGl0ZXJhdG9yLT5zZXROZXh0SW5kZXgo
aW5kZXggKyAxKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0KGNhbGxGcmFt
ZSwga2luZCwgaW5kZXgsIHJlc3VsdCwgZmFsc2UpOwotICAgIH0KLSAgICAKLSAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoaXRlcmF0ZWRP
YmplY3QpOwotICAgIGlmIChraW5kID4gQXJyYXlJdGVyYXRlU3BhcnNlVGFnKSB7Ci0gICAgICAg
IC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBpbmRleGVkIHByb3BlcnR5IHdpbGwgYmUgYW4gb3duIHBy
b3BlcnR5IHNvIGNhY2hlIHRoZSBnZXRPd25Qcm9wZXJ0eQotICAgICAgICAvLyBtZXRob2QgbG9j
YWxseQotICAgICAgICBhdXRvIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXggPSBpdGVyYXRlZE9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleDsKLSAgICAgICAg
d2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAoZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChpdGVyYXRlZE9iamVjdCwgY2FsbEZyYW1lLCBpbmRleCwgc2xvdCkpIHsKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaW5kZXgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGl0
ZXJhdGVkT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpbmRleCwgc2xvdCkpIHsK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaW5kZXgp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5k
ZXgrKzsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXRlcmF0ZWRPYmplY3QtPmdldFByb3Bl
cnR5U2xvdChjYWxsRnJhbWUsIGluZGV4LCBzbG90KSkKLSAgICAgICAgcmVzdWx0ID0gc2xvdC5n
ZXRWYWx1ZShjYWxsRnJhbWUsIGluZGV4KTsKLQotICAgIGlmIChpbmRleCA9PSBsZW5ndGgpCi0g
ICAgICAgIGl0ZXJhdG9yLT5maW5pc2goKTsKLSAgICBlbHNlCi0gICAgICAgIGl0ZXJhdG9yLT5z
ZXROZXh0SW5kZXgoaW5kZXggKyAxKTsKLSAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHQo
Y2FsbEZyYW1lLCBraW5kLCBpbmRleCwganNVbmRlZmluZWQoKSwgaW5kZXggPT0gbGVuZ3RoKTsK
LX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9yUHJvdG90eXBl
SXRlcmF0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuaAppbmRleCBmYjIzZTBiYWM4ZGNiNjAwMjhmNjkzOWQxYTljM2NkNDhhNGE4
YjBjLi5jZDA2YzdlMzk1OWQ1MzdmZjQ4MGJhMzA2MzgwNDYwMWJmNTk1Njk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtNDksNyArNDksOSBAQCBlbnVt
IEludHJpbnNpYyB7CiAgICAgUmVnRXhwVGVzdEludHJpbnNpYywKICAgICBTdHJpbmdQcm90b3R5
cGVWYWx1ZU9mSW50cmluc2ljLAogICAgIElNdWxJbnRyaW5zaWMsCi0gICAgQXJyYXlJdGVyYXRv
ck5leHRJbnRyaW5zaWMKKyAgICBBcnJheUl0ZXJhdG9yTmV4dFZhbHVlSW50cmluc2ljLAorICAg
IEFycmF5SXRlcmF0b3JOZXh0S2V5SW50cmluc2ljLAorICAgIEFycmF5SXRlcmF0b3JOZXh0R2Vu
ZXJpY0ludHJpbnNpYwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAppbmRleCAyOGZiMTlkYjM4
NjRhN2QxZDRmNzNiYTZiYTZmMDlhMGUyNDY1YWVhLi5jMWJmNWIzMTg2MThiOGM1MTc4NjBkZTkw
ZjVkZjNmOTQ4YjU1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTM0LDExICszNCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlJdGVyYXRvcjo6c19pbmZvID0geyAiQXJyYXlJdGVy
YXRvciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBcnJheUl0
ZXJhdG9yKSB9OwogCi12b2lkIEpTQXJyYXlJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIEFycmF5SXRlcmF0aW9uS2luZCBraW5kLCBKU09iamVjdCogaXRl
cmF0ZWRPYmplY3QpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0
ZXJhdG9yTmV4dEtleShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5SXRlcmF0b3JOZXh0VmFsdWUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9yTmV4dEdlbmVyaWMoRXhlY1N0YXRl
Kik7CisKK3ZvaWQgSlNBcnJheUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmF5SXRlcmF0aW9uS2luZCBraW5kLCBKU09iamVj
dCogaXRlcmF0ZWRPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICBtX2l0ZXJhdGlvbktpbmQgPSBraW5kOwog
ICAgIG1faXRlcmF0ZWRPYmplY3Quc2V0KHZtLCB0aGlzLCBpdGVyYXRlZE9iamVjdCk7CisgICAg
c3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBBcnJheUl0ZXJhdGVLZXk6CisgICAgICAgIEpTQ19O
QVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFBy
aXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yTmV4dEtleSwgRG9udEVudW0sIDAsIEFycmF5SXRlcmF0
b3JOZXh0S2V5SW50cmluc2ljKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBcnJheUl0ZXJh
dGVWYWx1ZToKKyAgICAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JOZXh0VmFsdWUs
IERvbnRFbnVtLCAwLCBBcnJheUl0ZXJhdG9yTmV4dFZhbHVlSW50cmluc2ljKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJ
T04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIGFycmF5SXRlcmF0
b3JOZXh0R2VuZXJpYywgRG9udEVudW0sIDAsIEFycmF5SXRlcmF0b3JOZXh0R2VuZXJpY0ludHJp
bnNpYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogfQogICAgIAogICAgIApAQCAtNTQsNCAr
NzEsOTggQEAgdm9pZCBKU0FycmF5SXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3Jl
YXRlSXRlcmF0b3JSZXN1bHQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEFycmF5SXRlcmF0aW9uS2lu
ZCBraW5kLCBzaXplX3QgaW5kZXgsIEpTVmFsdWUgcmVzdWx0LCBib29sIGRvbmUpCit7CisgICAg
Y2FsbEZyYW1lLT5zZXRBcmd1bWVudChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSAtIDEsIGpz
Qm9vbGVhbihkb25lKSk7CisgICAgaWYgKGRvbmUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FsbEZyYW1lLT52bSgpLml0ZXJhdGlvblRlcm1pbmF0b3IuZ2V0KCkpOworICAgIAor
ICAgIHN3aXRjaCAoa2luZCAmIH5BcnJheUl0ZXJhdGVTcGFyc2VUYWcpIHsKKyAgICBjYXNlIEFy
cmF5SXRlcmF0ZUtleToKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihp
bmRleCkpOworICAgICAgICAKKyAgICBjYXNlIEFycmF5SXRlcmF0ZVZhbHVlOgorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIAorICAgIGNhc2UgQXJyYXlJ
dGVyYXRlS2V5VmFsdWU6IHsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAg
ICAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoaW5kZXgpKTsKKyAgICAgICAgYXJncy5hcHBlbmQo
cmVzdWx0KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFt
ZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgMCwgZ2xvYmFsT2JqZWN0LCBhcmdzKSk7Cisg
ICAgICAgIAorICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0
ZXJhdG9yTmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBKU0FycmF5SXRlcmF0b3Iq
IGl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWl0ZXJhdG9yKQorICAgICAgICB0aHJvd1R5cGVFcnJvcihj
YWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgQXJyYXlJdGVyYXRvci5uZXh0KCkg
b24gYSBub24tQXJyYXlJdGVyYXRvciBvYmplY3QiKSk7CisgICAgSlNPYmplY3QqIGl0ZXJhdGVk
T2JqZWN0ID0gaXRlcmF0b3ItPml0ZXJhdGVkT2JqZWN0KCk7CisgICAgc2l6ZV90IGluZGV4ID0g
aXRlcmF0b3ItPm5leHRJbmRleCgpOworICAgIEFycmF5SXRlcmF0aW9uS2luZCBraW5kID0gaXRl
cmF0b3ItPml0ZXJhdGlvbktpbmQoKTsKKyAgICBKU1ZhbHVlIGpzTGVuZ3RoID0gSlNWYWx1ZShp
dGVyYXRlZE9iamVjdCkuZ2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CisgICAgCisgICAgc2l6ZV90IGxlbmd0aCA9
IGpzTGVuZ3RoLnRvVUludDMyKGNhbGxGcmFtZSk7CisgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOworICAg
IAorICAgIGlmIChpbmRleCA+PSBsZW5ndGgpIHsKKyAgICAgICAgaXRlcmF0b3ItPmZpbmlzaCgp
OworICAgICAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHQoY2FsbEZyYW1lLCBraW5kLCBp
bmRleCwganNVbmRlZmluZWQoKSwgdHJ1ZSk7CisgICAgfQorICAgIGlmIChKU1ZhbHVlIHJlc3Vs
dCA9IGl0ZXJhdGVkT2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKSB7CisgICAgICAg
IGl0ZXJhdG9yLT5zZXROZXh0SW5kZXgoaW5kZXggKyAxKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZUl0ZXJhdG9yUmVzdWx0KGNhbGxGcmFtZSwga2luZCwgaW5kZXgsIHJlc3VsdCwgZmFsc2UpOwor
ICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CisgICAgUHJv
cGVydHlTbG90IHNsb3QoaXRlcmF0ZWRPYmplY3QpOworICAgIGlmIChraW5kID4gQXJyYXlJdGVy
YXRlU3BhcnNlVGFnKSB7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBpbmRleGVkIHBy
b3BlcnR5IHdpbGwgYmUgYW4gb3duIHByb3BlcnR5IHNvIGNhY2hlIHRoZSBnZXRPd25Qcm9wZXJ0
eQorICAgICAgICAvLyBtZXRob2QgbG9jYWxseQorICAgICAgICBhdXRvIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXggPSBpdGVyYXRlZE9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleDsKKyAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CisgICAgICAg
ICAgICBpZiAoZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChpdGVyYXRlZE9iamVjdCwgY2FsbEZy
YW1lLCBpbmRleCwgc2xvdCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZh
bHVlKGNhbGxGcmFtZSwgaW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGl0ZXJhdGVkT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2Fs
bEZyYW1lLCBpbmRleCwgc2xvdCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzbG90Lmdl
dFZhbHVlKGNhbGxGcmFtZSwgaW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
aXRlcmF0ZWRPYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGluZGV4LCBzbG90KSkK
KyAgICAgICAgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGluZGV4KTsKKyAgICAK
KyAgICBpZiAoaW5kZXggPT0gbGVuZ3RoKQorICAgICAgICBpdGVyYXRvci0+ZmluaXNoKCk7Cisg
ICAgZWxzZQorICAgICAgICBpdGVyYXRvci0+c2V0TmV4dEluZGV4KGluZGV4ICsgMSk7CisgICAg
cmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0KGNhbGxGcmFtZSwga2luZCwgaW5kZXgsIGpzVW5k
ZWZpbmVkKCksIGluZGV4ID09IGxlbmd0aCk7Cit9CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5SXRlcmF0b3JOZXh0S2V5KENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIHJldHVybiBhcnJheUl0ZXJhdG9yTmV4dChjYWxsRnJhbWUpOworfQorICAgIAorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9yTmV4dFZhbHVlKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIHJldHVybiBhcnJheUl0ZXJhdG9yTmV4dChjYWxsRnJhbWUpOwor
fQorICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9yTmV4dEdl
bmVyaWMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIGFycmF5SXRlcmF0b3JO
ZXh0KGNhbGxGcmFtZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCAwMzMyNTM1ZWYyYTMzNDY2YWEzMWMxMGRkNjgzMjQ1NjMwMDZlODBjLi4zNjgzMWU4MDAx
ZmFjNjQ0OWJiMzRjODlhZmU2YTIyNDkxNmUxYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC00MjUsOCArNDI1LDEwIEBAIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVu
a0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1
cm4gbG9nVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBJTXVsSW50cmluc2ljOgogICAgICAgICBy
ZXR1cm4gaW11bFRodW5rR2VuZXJhdG9yOwotICAgIGNhc2UgQXJyYXlJdGVyYXRvck5leHRJbnRy
aW5zaWM6Ci0gICAgICAgIHJldHVybiBhcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yOwor
ICAgIGNhc2UgQXJyYXlJdGVyYXRvck5leHRLZXlJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiBh
cnJheUl0ZXJhdG9yTmV4dEtleVRodW5rR2VuZXJhdG9yOworICAgIGNhc2UgQXJyYXlJdGVyYXRv
ck5leHRWYWx1ZUludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIGFycmF5SXRlcmF0b3JOZXh0VmFs
dWVUaHVua0dlbmVyYXRvcjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gMDsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213998</attachid>
            <date>2013-10-11 10:16:21 -0700</date>
            <delta_ts>2013-10-11 10:27:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122656-20131011101623.patch</filename>
            <type>text/plain</type>
            <size>16837</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDEwYzA5NWVjZjc1NTMxOGQxYTMxZTE1MGQ1MzFlYmQ4ODE1M2M1Li44ZGI3YjVlNjhkNTY2ZTUw
OGMxMDU0YmQ4MmEzODZjY2QwZjZlZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxMy0xMC0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFNlcGFyYXRlIG91dCBhcnJheSBpdGVyYXRpb24gaW50cmluc2ljcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNjU2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VwYXJhdGUgb3V0IHRo
ZSBpbnRyaW5zaWNzIGZvciBrZXkgYW5kIHZhbHVlcyBpdGVyYXRpb24KKyAgICAgICAgb2YgYXJy
YXlzLgorCisgICAgICAgIFRoaXMgcmVxdWlyZXMgbW92aW5nIG1vdmluZyBhcnJheSBpdGVyYXRp
b24gaW50byB0aGUgaXRlcmF0b3IKKyAgICAgICAgaW5zdGFuY2UsIHJhdGhlciB0aGFuIHRoZSBw
cm90b3R5cGUsIGJ1dCB0aGlzIGlzIGVzc2VudGlhbGx5CisgICAgICAgIHVub2JzZXJ2YWJsZSBz
byB3ZSdsbCBsaXZlIHdpdGggaXQgZm9yIG5vdy4KKworICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6YXJyYXlJdGVyYXRvck5leHRLZXlUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VmFsdWVUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlJdGVy
YXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5SXRlcmF0b3JQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUl0
ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZUl0ZXJhdG9yUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6YXJyYXlJdGVyYXRvck5leHQpOgorICAgICAgICAoSlNDOjph
cnJheUl0ZXJhdG9yTmV4dEtleSk6CisgICAgICAgIChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VmFs
dWUpOgorICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dEdlbmVyaWMpOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dlbmVyYXRvckZvckludHJpbnNp
Yyk6CisKIDIwMTMtMTAtMDkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGdXJ0aGVyIGltcHJvdmUgQXJyYXlJdGVyYXRvciBwZXJmb3JtYW5jZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDMxYjAxYmI3Mjcx
NjU1YjgwMDU4YjQ5ODdkNmY5NTY2NjVlOWY3NWMuLjlkMGVkMDRhMzBiZmIxYTc3ODkwNGRkM2Y2
ZTNhOGQyY2VkNGVkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAKQEAgLTk4OCw3ICs5ODgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11
bFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJpbXVsIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBhcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3N0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXRvck5leHRUaHVua0dlbmVyYXRvcihWTSogdm0s
IEFycmF5SXRlcmF0aW9uS2luZCBraW5kKQogewogICAgIHR5cGVkZWYgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6VHJ1c3RlZEltbTMyIFRydXN0ZWRJbW0zMjsKICAgICB0eXBlZGVmIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OlRydXN0ZWRJbW1QdHIgVHJ1c3RlZEltbVB0cjsKQEAgLTEwMTQsNyArMTAxNCw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMik7CiAgICAgCiAgICAgaml0LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFz
ayksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKLSAgICAKKwogICAgIEp1bXAgbm90RG9u
ZSA9IGppdC5icmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpCZWxvdywgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDEsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAgIC8vIFJldHVybiB0aGUgdGVybWlu
YXRpb24gc2lnbmFsIHRvIGluZGljYXRlIHRoYXQgd2UndmUgZmluaXNoZWQKICAgICBqaXQubW92
ZShUcnVzdGVkSW1tUHRyKHZtLT5pdGVyYXRpb25UZXJtaW5hdG9yLmdldCgpKSwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtMTAyMiwxNCArMTAyMiwxMyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgYXJyYXlJdGVyYXRvck5leHRUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgCiAg
ICAgbm90RG9uZS5saW5rKCZqaXQpOwogICAgIAotICAgIAotICAgIEp1bXAgbm90S2V5ID0gaml0
LmJyYW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Ok5vdEVxdWFsLCBBZGRyZXNzKFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRlcmF0b3I6Om9mZnNldE9mSXRlcmF0aW9uS2lu
ZCgpKSwgVHJ1c3RlZEltbTMyKEFycmF5SXRlcmF0ZUtleSkpOwotICAgIC8vIElmIHdlJ3JlIGRv
aW5nIGtleSBpdGVyYXRpb24gd2UganVzdCBuZWVkIHRvIGluY3JlbWVudCBtX25leHRJbmRleCBh
bmQgcmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlCi0gICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMigx
KSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpv
ZmZzZXRPZk5leHRJbmRleCgpKSk7Ci0gICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QxKTsKLSAgICAKLSAgICBub3RLZXkubGluaygmaml0KTsKLSAgICAKKyAgICBp
ZiAoa2luZCA9PSBBcnJheUl0ZXJhdGVLZXkpIHsKKyAgICAgICAgaml0LmFkZDMyKFRydXN0ZWRJ
bW0zMigxKSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJh
dG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSk7CisgICAgICAgIGppdC5yZXR1cm5JbnQzMihTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMSk7CisgICAgICAgIHJldHVybiBqaXQuZmluYWxpemUodm0t
PmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImFycmF5LWl0ZXJhdG9yLW5leHQta2V5Iik7
CisgICAgICAgIAorICAgIH0KKyAgICBBU1NFUlQoa2luZCA9PSBBcnJheUl0ZXJhdGVLZXlWYWx1
ZSk7CiAgICAgCiAgICAgLy8gT2theSwgbm93IHdlJ3JlIHJldHVybmluZyBhIHZhbHVlIHNvIG1h
a2Ugc3VyZSB3ZSdyZSBpbnNpZGUgdGhlIHZlY3RvciBzaXplCiAgICAgaml0LmFwcGVuZEZhaWx1
cmUoaml0LmJyYW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OkFib3ZlT3JFcXVhbCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDEsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIs
IEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpKTsKQEAgLTEwNzcsNyArMTA3Niwx
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXRvck5leHRUaHVua0dlbmVyYXRv
cihWTSogdm0pCiAgICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgp
KSk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsK
ICAgICAKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2Fs
bCh2bSksICJhcnJheS1pdGVyYXRvci1uZXh0Iik7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiYXJyYXktaXRlcmF0b3ItbmV4dC12YWx1
ZSIpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXRvck5leHRLZXlUaHVu
a0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtH
ZW5lcmF0b3Iodm0sIEFycmF5SXRlcmF0ZUtleSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBhcnJheUl0ZXJhdG9yTmV4dFZhbHVlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJl
dHVybiBhcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKHZtLCBBcnJheUl0ZXJhdGVWYWx1
ZSk7CiB9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuaAppbmRleCA2OWRhMzlkNzNmMmU3MDdiNDBlZTY4N2FjNjdlM2MwM2U1YmM0NmQxLi5iOGY2
Y2M0OTQ4N2MyZmU0NTZkYjQ2YmRlNjJmZjc5NTZkOGIyYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTU4LDcgKzU4LDggQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwb3dU
aHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVy
YXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcnJheUl0ZXJhdG9yTmV4dEtl
eVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXRv
ck5leHRWYWx1ZVRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0KICNlbmRpZiAvLyBFTkFCTEUoSklU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmNwcAppbmRleCAwODcxZGE2MzhjY2U1NDMxNTAzZjkwMmQwZmE5NWM0YmUx
NTY5ZTNmLi4xY2NiNzkxYjc5MmUxZDY4NzkxZDJlYmU3YmVlNTU2NDBhNTE2ODAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJv
dG90eXBlLmNwcApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xh
c3NJbmZvIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkFycmF5IEl0ZXJhdG9y
IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUl0ZXJhdG9y
UHJvdG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eUl0ZXJhdG9yUHJvdG90eXBlTmV4dChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlKEV4ZWNTdGF0ZSop
OwogCiB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTQ1LDkwICs0NCw5IEBAIHZvaWQgQXJy
YXlJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnBy
b3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJ
Q19GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5leHRQcml2YXRlTmFtZSwgYXJy
YXlJdGVyYXRvclByb3RvdHlwZU5leHQsIERvbnRFbnVtLCAwLCBBcnJheUl0ZXJhdG9yTmV4dElu
dHJpbnNpYyk7Ci0KICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlLCBEb250RW51
bSwgMCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjcmVhdGVJdGVyYXRvclJlc3VsdChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQXJyYXlJdGVyYXRpb25LaW5kIGtpbmQsIHNpemVfdCBpbmRl
eCwgSlNWYWx1ZSByZXN1bHQsIGJvb2wgZG9uZSkKLXsKLSAgICBjYWxsRnJhbWUtPnNldEFyZ3Vt
ZW50KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIC0gMSwganNCb29sZWFuKGRvbmUpKTsKLSAg
ICBpZiAoZG9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnZt
KCkuaXRlcmF0aW9uVGVybWluYXRvci5nZXQoKSk7Ci0KLSAgICBzd2l0Y2ggKGtpbmQgJiB+QXJy
YXlJdGVyYXRlU3BhcnNlVGFnKSB7Ci0gICAgY2FzZSBBcnJheUl0ZXJhdGVLZXk6Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5kZXgpKTsKLQotICAgIGNhc2UgQXJy
YXlJdGVyYXRlVmFsdWU6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
LQotICAgIGNhc2UgQXJyYXlJdGVyYXRlS2V5VmFsdWU6IHsKLSAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnczsKLSAgICAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoaW5kZXgpKTsKLSAg
ICAgICAgYXJncy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgMCwgZ2xvYmFs
T2JqZWN0LCBhcmdzKSk7Ci0KLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5SXRlcmF0
b3JQcm90b3R5cGVOZXh0KENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIEpTQXJyYXlJdGVy
YXRvciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwotICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgIHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBBcnJheUl0ZXJhdG9yLm5l
eHQoKSBvbiBhIG5vbi1BcnJheUl0ZXJhdG9yIG9iamVjdCIpKTsKLSAgICBKU09iamVjdCogaXRl
cmF0ZWRPYmplY3QgPSBpdGVyYXRvci0+aXRlcmF0ZWRPYmplY3QoKTsKLSAgICBzaXplX3QgaW5k
ZXggPSBpdGVyYXRvci0+bmV4dEluZGV4KCk7Ci0gICAgQXJyYXlJdGVyYXRpb25LaW5kIGtpbmQg
PSBpdGVyYXRvci0+aXRlcmF0aW9uS2luZCgpOwotICAgIEpTVmFsdWUganNMZW5ndGggPSBKU1Zh
bHVlKGl0ZXJhdGVkT2JqZWN0KS5nZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpOwotICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLQotICAgIHNpemVfdCBsZW5ndGgg
PSBqc0xlbmd0aC50b1VJbnQzMihjYWxsRnJhbWUpOwotICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLQot
ICAgIGlmIChpbmRleCA+PSBsZW5ndGgpIHsKLSAgICAgICAgaXRlcmF0b3ItPmZpbmlzaCgpOwot
ICAgICAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHQoY2FsbEZyYW1lLCBraW5kLCBpbmRl
eCwganNVbmRlZmluZWQoKSwgdHJ1ZSk7Ci0gICAgfQotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9
IGl0ZXJhdGVkT2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKSB7Ci0gICAgICAgIGl0
ZXJhdG9yLT5zZXROZXh0SW5kZXgoaW5kZXggKyAxKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUl0
ZXJhdG9yUmVzdWx0KGNhbGxGcmFtZSwga2luZCwgaW5kZXgsIHJlc3VsdCwgZmFsc2UpOwotICAg
IH0KLSAgICAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3QoaXRlcmF0ZWRPYmplY3QpOwotICAgIGlmIChraW5kID4gQXJyYXlJdGVyYXRl
U3BhcnNlVGFnKSB7Ci0gICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBpbmRleGVkIHByb3Bl
cnR5IHdpbGwgYmUgYW4gb3duIHByb3BlcnR5IHNvIGNhY2hlIHRoZSBnZXRPd25Qcm9wZXJ0eQot
ICAgICAgICAvLyBtZXRob2QgbG9jYWxseQotICAgICAgICBhdXRvIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXggPSBpdGVyYXRlZE9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleDsKLSAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICAgICAg
ICBpZiAoZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChpdGVyYXRlZE9iamVjdCwgY2FsbEZyYW1l
LCBpbmRleCwgc2xvdCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVl
KGNhbGxGcmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGl0ZXJhdGVkT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZy
YW1lLCBpbmRleCwgc2xvdCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZh
bHVlKGNhbGxGcmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXRl
cmF0ZWRPYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGluZGV4LCBzbG90KSkKLSAg
ICAgICAgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGluZGV4KTsKLQotICAgIGlm
IChpbmRleCA9PSBsZW5ndGgpCi0gICAgICAgIGl0ZXJhdG9yLT5maW5pc2goKTsKLSAgICBlbHNl
Ci0gICAgICAgIGl0ZXJhdG9yLT5zZXROZXh0SW5kZXgoaW5kZXggKyAxKTsKLSAgICByZXR1cm4g
Y3JlYXRlSXRlcmF0b3JSZXN1bHQoY2FsbEZyYW1lLCBraW5kLCBpbmRleCwganNVbmRlZmluZWQo
KSwgaW5kZXggPT0gbGVuZ3RoKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheUl0ZXJhdG9yUHJvdG90eXBlSXRlcmF0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCBmYjIzZTBiYWM4ZGNiNjAw
MjhmNjkzOWQxYTljM2NkNDhhNGE4YjBjLi5jZDA2YzdlMzk1OWQ1MzdmZjQ4MGJhMzA2MzgwNDYw
MWJmNTk1Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApA
QCAtNDksNyArNDksOSBAQCBlbnVtIEludHJpbnNpYyB7CiAgICAgUmVnRXhwVGVzdEludHJpbnNp
YywKICAgICBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljLAogICAgIElNdWxJbnRyaW5z
aWMsCi0gICAgQXJyYXlJdGVyYXRvck5leHRJbnRyaW5zaWMKKyAgICBBcnJheUl0ZXJhdG9yTmV4
dFZhbHVlSW50cmluc2ljLAorICAgIEFycmF5SXRlcmF0b3JOZXh0S2V5SW50cmluc2ljLAorICAg
IEFycmF5SXRlcmF0b3JOZXh0R2VuZXJpY0ludHJpbnNpYwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRl
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9y
LmNwcAppbmRleCAyOGZiMTlkYjM4NjRhN2QxZDRmNzNiYTZiYTZmMDlhMGUyNDY1YWVhLi5jMWJm
NWIzMTg2MThiOGM1MTc4NjBkZTkwZjVkZjNmOTQ4YjU1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTM0LDExICszNCwy
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlJdGVyYXRvcjo6
c19pbmZvID0geyAiQXJyYXlJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNBcnJheUl0ZXJhdG9yKSB9OwogCi12b2lkIEpTQXJyYXlJdGVyYXRvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIEFycmF5SXRlcmF0aW9uS2lu
ZCBraW5kLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9yTmV4dEtleShFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5SXRlcmF0b3JOZXh0VmFsdWUoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9y
TmV4dEdlbmVyaWMoRXhlY1N0YXRlKik7CisKK3ZvaWQgSlNBcnJheUl0ZXJhdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmF5SXRlcmF0
aW9uS2luZCBraW5kLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICBtX2l0
ZXJhdGlvbktpbmQgPSBraW5kOwogICAgIG1faXRlcmF0ZWRPYmplY3Quc2V0KHZtLCB0aGlzLCBp
dGVyYXRlZE9iamVjdCk7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBBcnJheUl0ZXJh
dGVLZXk6CisgICAgICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yTmV4dEtleSwgRG9u
dEVudW0sIDAsIEFycmF5SXRlcmF0b3JOZXh0S2V5SW50cmluc2ljKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBcnJheUl0ZXJhdGVWYWx1ZToKKyAgICAgICAgSlNDX05BVElWRV9JTlRSSU5T
SUNfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIGFy
cmF5SXRlcmF0b3JOZXh0VmFsdWUsIERvbnRFbnVtLCAwLCBBcnJheUl0ZXJhdG9yTmV4dFZhbHVl
SW50cmluc2ljKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJp
dmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JOZXh0R2VuZXJpYywgRG9udEVudW0sIDAsIEFycmF5SXRl
cmF0b3JOZXh0R2VuZXJpY0ludHJpbnNpYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogfQog
ICAgIAogICAgIApAQCAtNTQsNCArNzEsOTggQEAgdm9pZCBKU0FycmF5SXRlcmF0b3I6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogfQogCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgY3JlYXRlSXRlcmF0b3JSZXN1bHQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEFycmF5SXRlcmF0aW9uS2luZCBraW5kLCBzaXplX3QgaW5kZXgsIEpTVmFsdWUgcmVzdWx0
LCBib29sIGRvbmUpCit7CisgICAgY2FsbEZyYW1lLT5zZXRBcmd1bWVudChjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSAtIDEsIGpzQm9vbGVhbihkb25lKSk7CisgICAgaWYgKGRvbmUpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT52bSgpLml0ZXJhdGlvblRlcm1p
bmF0b3IuZ2V0KCkpOworICAgIAorICAgIHN3aXRjaCAoa2luZCAmIH5BcnJheUl0ZXJhdGVTcGFy
c2VUYWcpIHsKKyAgICBjYXNlIEFycmF5SXRlcmF0ZUtleToKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihpbmRleCkpOworICAgICAgICAKKyAgICBjYXNlIEFycmF5SXRl
cmF0ZVZhbHVlOgorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAg
ICAgIAorICAgIGNhc2UgQXJyYXlJdGVyYXRlS2V5VmFsdWU6IHsKKyAgICAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoaW5kZXgpKTsK
KyAgICAgICAgYXJncy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgMCwgZ2xv
YmFsT2JqZWN0LCBhcmdzKSk7CisgICAgICAgIAorICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9yTmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sK
KyAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRl
cmF0b3IqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWl0ZXJhdG9yKQorICAg
ICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwg
QXJyYXlJdGVyYXRvci5uZXh0KCkgb24gYSBub24tQXJyYXlJdGVyYXRvciBvYmplY3QiKSk7Cisg
ICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0ID0gaXRlcmF0b3ItPml0ZXJhdGVkT2JqZWN0KCk7
CisgICAgc2l6ZV90IGluZGV4ID0gaXRlcmF0b3ItPm5leHRJbmRleCgpOworICAgIEFycmF5SXRl
cmF0aW9uS2luZCBraW5kID0gaXRlcmF0b3ItPml0ZXJhdGlvbktpbmQoKTsKKyAgICBKU1ZhbHVl
IGpzTGVuZ3RoID0gSlNWYWx1ZShpdGVyYXRlZE9iamVjdCkuZ2V0KGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CisgICAg
CisgICAgc2l6ZV90IGxlbmd0aCA9IGpzTGVuZ3RoLnRvVUludDMyKGNhbGxGcmFtZSk7CisgICAg
aWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdWxsKCkpOworICAgIAorICAgIGlmIChpbmRleCA+PSBsZW5ndGgpIHsKKyAgICAg
ICAgaXRlcmF0b3ItPmZpbmlzaCgpOworICAgICAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1
bHQoY2FsbEZyYW1lLCBraW5kLCBpbmRleCwganNVbmRlZmluZWQoKSwgdHJ1ZSk7CisgICAgfQor
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGl0ZXJhdGVkT2JqZWN0LT50cnlHZXRJbmRleFF1aWNr
bHkoaW5kZXgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT5zZXROZXh0SW5kZXgoaW5kZXggKyAxKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0KGNhbGxGcmFtZSwga2luZCwgaW5k
ZXgsIHJlc3VsdCwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
VW5kZWZpbmVkKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoaXRlcmF0ZWRPYmplY3QpOworICAg
IGlmIChraW5kID4gQXJyYXlJdGVyYXRlU3BhcnNlVGFnKSB7CisgICAgICAgIC8vIFdlIGFzc3Vt
ZSB0aGF0IHRoZSBpbmRleGVkIHByb3BlcnR5IHdpbGwgYmUgYW4gb3duIHByb3BlcnR5IHNvIGNh
Y2hlIHRoZSBnZXRPd25Qcm9wZXJ0eQorICAgICAgICAvLyBtZXRob2QgbG9jYWxseQorICAgICAg
ICBhdXRvIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXggPSBpdGVyYXRlZE9iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleDsKKyAgICAgICAgd2hpbGUgKGluZGV4
IDwgbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChp
dGVyYXRlZE9iamVjdCwgY2FsbEZyYW1lLCBpbmRleCwgc2xvdCkpIHsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaW5kZXgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGl0ZXJhdGVkT2JqZWN0
LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpbmRleCwgc2xvdCkpIHsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaW5kZXgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAoaXRlcmF0ZWRPYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxs
RnJhbWUsIGluZGV4LCBzbG90KSkKKyAgICAgICAgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxs
RnJhbWUsIGluZGV4KTsKKyAgICAKKyAgICBpZiAoaW5kZXggPT0gbGVuZ3RoKQorICAgICAgICBp
dGVyYXRvci0+ZmluaXNoKCk7CisgICAgZWxzZQorICAgICAgICBpdGVyYXRvci0+c2V0TmV4dElu
ZGV4KGluZGV4ICsgMSk7CisgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0KGNhbGxGcmFt
ZSwga2luZCwgaW5kZXgsIGpzVW5kZWZpbmVkKCksIGluZGV4ID09IGxlbmd0aCk7Cit9CisgICAg
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5SXRlcmF0b3JOZXh0S2V5KENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBhcnJheUl0ZXJhdG9yTmV4dChjYWxsRnJh
bWUpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9y
TmV4dFZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBhcnJheUl0ZXJh
dG9yTmV4dChjYWxsRnJhbWUpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUl0ZXJhdG9yTmV4dEdlbmVyaWMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAg
cmV0dXJuIGFycmF5SXRlcmF0b3JOZXh0KGNhbGxGcmFtZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwMzMyNTM1ZWYyYTMzNDY2YWEzMWMxMGRkNjgzMjQ1
NjMwMDZlODBjLi4zNjgzMWU4MDAxZmFjNjQ0OWJiMzRjODlhZmU2YTIyNDkxNmUxYzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00MjUsOCArNDI1LDEwIEBAIHN0YXRp
YyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50
cmluc2ljKQogICAgICAgICByZXR1cm4gbG9nVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBJTXVs
SW50cmluc2ljOgogICAgICAgICByZXR1cm4gaW11bFRodW5rR2VuZXJhdG9yOwotICAgIGNhc2Ug
QXJyYXlJdGVyYXRvck5leHRJbnRyaW5zaWM6Ci0gICAgICAgIHJldHVybiBhcnJheUl0ZXJhdG9y
TmV4dFRodW5rR2VuZXJhdG9yOworICAgIGNhc2UgQXJyYXlJdGVyYXRvck5leHRLZXlJbnRyaW5z
aWM6CisgICAgICAgIHJldHVybiBhcnJheUl0ZXJhdG9yTmV4dEtleVRodW5rR2VuZXJhdG9yOwor
ICAgIGNhc2UgQXJyYXlJdGVyYXRvck5leHRWYWx1ZUludHJpbnNpYzoKKyAgICAgICAgcmV0dXJu
IGFycmF5SXRlcmF0b3JOZXh0VmFsdWVUaHVua0dlbmVyYXRvcjsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gMDsKICAgICB9Cg==
</data>
<flag name="review"
          id="236470"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>