<?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>29141</bug_id>
          
          <creation_ts>2009-09-10 12:17:06 -0700</creation_ts>
          <short_desc>Refactor StructureTransitionTable and Structure to unify handling of the single slot optimisation</short_desc>
          <delta_ts>2009-09-10 13:02:29 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>146288</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-10 12:17:06 -0700</bug_when>
    <thetext>Make code nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146291</commentid>
    <comment_count>1</comment_count>
      <attachid>39368</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-10 12:22:40 -0700</bug_when>
    <thetext>Created attachment 39368
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146294</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-09-10 12:36:29 -0700</bug_when>
    <thetext>Please make the StructureTransitionTable() constructor call setSingleTransition(0), instead of handling the bitfield manually.

Too bad we can&apos;t use PtrAndFlags here! We need a trick to help the leaks tool &apos;see&apos; m_singleTransition. How about refactoring PtrAndFlags into a base class that has no constructor, and is safe to use in a union?

r=me if you do those two things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146300</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-10 13:02:29 -0700</bug_when>
    <thetext>Committed r48264</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39368</attachid>
            <date>2009-09-10 12:22:40 -0700</date>
            <delta_ts>2009-09-10 12:36:40 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29141-20090910122239.patch</filename>
            <type>text/plain</type>
            <size>16371</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBmYjYwNmFiLi40N2E3MTAyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMDktMDktMTAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUgYW5kIFN0cnVjdHVyZSB0byB1bmlmeSBoYW5kbGluZyBvZiB0aGUg
c2luZ2xlIHNsb3Qgb3B0aW1pemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yOTE0MQorCisgICAgICAgIE1ha2UgU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlIGVuY2Fwc3VsYXRlIHRoZSBzaW5nbGUgdHJhbnNpdGlvbiBzbG90IG9wdGltaXphdGlv
bi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzVHJhbnNpdGlvbik6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlOjpjb250YWlucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpoYXNU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpyZWlm
eVNpbmdsZVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6U3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlOjp+U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU6OmFkZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6
dGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRy
YW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnVzaW5n
U2luZ2xlVHJhbnNpdGlvblNsb3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OnNldFNpbmdsZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGU6OnNldFRyYW5zaXRpb25UYWJsZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZTo6KToKKwogMjAwOS0wOS0xMCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0
YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA4ZGU1MWRiLi5jYWFkOTkzIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMzAsMTQgKzEzMCwxMSBAQCBTdHJ1Y3R1
cmU6OlN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZv
KQogICAgICwgbV9pc0RpY3Rpb25hcnkoZmFsc2UpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlU
YWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKLSAg
ICAsIG1fdXNpbmdTaW5nbGVUcmFuc2l0aW9uU2xvdCh0cnVlKQogICAgICwgbV9hdHRyaWJ1dGVz
SW5QcmV2aW91cygwKQogewogICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7CiAgICAgQVNTRVJUKG1f
cHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNOdWxsKCkpOwogCi0gICAgbV90
cmFuc2l0aW9ucy5zaW5nbGVUcmFuc2l0aW9uID0gMDsKLQogI2lmbmRlZiBOREVCVUcKICNpZiBF
TkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgTXV0ZXhMb2NrZXIgcHJvdGVjdChpZ25v
cmVTZXRNdXRleCk7CkBAIC0xNTUsMjEgKzE1MiwxMiBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShK
U1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKQogCiBTdHJ1Y3R1cmU6
On5TdHJ1Y3R1cmUoKQogewotICAgIGlmIChtX3ByZXZpb3VzKSB7Ci0gICAgICAgIGlmIChtX3By
ZXZpb3VzLT5tX3VzaW5nU2luZ2xlVHJhbnNpdGlvblNsb3QpIHsKLSAgICAgICAgICAgIG1fcHJl
dmlvdXMtPm1fdHJhbnNpdGlvbnMuc2luZ2xlVHJhbnNpdGlvbiA9IDA7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9wcmV2aW91cy0+bV90cmFuc2l0aW9ucy50YWJsZS0+
Y29udGFpbnMobWFrZV9wYWlyKG1fbmFtZUluUHJldmlvdXMuZ2V0KCksIG1fYXR0cmlidXRlc0lu
UHJldmlvdXMpLCBtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKSk7Ci0gICAgICAgICAgICBtX3By
ZXZpb3VzLT5tX3RyYW5zaXRpb25zLnRhYmxlLT5yZW1vdmUobWFrZV9wYWlyKG1fbmFtZUluUHJl
dmlvdXMuZ2V0KCksIG1fYXR0cmlidXRlc0luUHJldmlvdXMpLCBtX3NwZWNpZmljVmFsdWVJblBy
ZXZpb3VzKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAobV9wcmV2aW91cykKKyAgICAgICAg
bV9wcmV2aW91cy0+dGFibGUucmVtb3ZlKG1ha2VfcGFpcihtX25hbWVJblByZXZpb3VzLmdldCgp
LCBtX2F0dHJpYnV0ZXNJblByZXZpb3VzKSwgbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAK
ICAgICBpZiAobV9jYWNoZWRQcm9wZXJ0eU5hbWVBcnJheURhdGEpCiAgICAgICAgIG1fY2FjaGVk
UHJvcGVydHlOYW1lQXJyYXlEYXRhLT5zZXRDYWNoZWRTdHJ1Y3R1cmUoMCk7CiAKLSAgICBpZiAo
IW1fdXNpbmdTaW5nbGVUcmFuc2l0aW9uU2xvdCkKLSAgICAgICAgZGVsZXRlIG1fdHJhbnNpdGlv
bnMudGFibGU7Ci0KICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CiAgICAgICAgIHVuc2lnbmVk
IGVudHJ5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPmtleUNvdW50ICsgbV9wcm9wZXJ0eVRhYmxl
LT5kZWxldGVkU2VudGluZWxDb3VudDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
PSBlbnRyeUNvdW50OyBpKyspIHsKQEAgLTM4MSwyMiArMzY5LDEwIEBAIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUoU3RydWN0CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1faXNEaWN0aW9uYXJ5KTsKICAgICBB
U1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKIAotICAg
IGlmIChzdHJ1Y3R1cmUtPm1fdXNpbmdTaW5nbGVUcmFuc2l0aW9uU2xvdCkgewotICAgICAgICBT
dHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9ucy5z
aW5nbGVUcmFuc2l0aW9uOwotICAgICAgICBpZiAoZXhpc3RpbmdUcmFuc2l0aW9uICYmIGV4aXN0
aW5nVHJhbnNpdGlvbi0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSA9PSBwcm9wZXJ0eU5hbWUudXN0
cmluZygpLnJlcCgpCi0gICAgICAgICAgICAmJiBleGlzdGluZ1RyYW5zaXRpb24tPm1fYXR0cmli
dXRlc0luUHJldmlvdXMgPT0gYXR0cmlidXRlcwotICAgICAgICAgICAgJiYgKGV4aXN0aW5nVHJh
bnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9PSBzcGVjaWZpY1ZhbHVlIHx8IGV4
aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9PSAwKSkgewotCi0g
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25zLnNpbmdsZVRyYW5zaXRp
b24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKLSAgICAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVy
ZS0+bV90cmFuc2l0aW9ucy5zaW5nbGVUcmFuc2l0aW9uLT5tX29mZnNldDsKLSAgICAgICAgICAg
IHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJh
bnNpdGlvbnMudGFibGUtPmdldChtYWtlX3BhaXIocHJvcGVydHlOYW1lLnVzdHJpbmcoKS5yZXAo
KSwgYXR0cmlidXRlcyksIHNwZWNpZmljVmFsdWUpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZXhp
c3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldCAhPSBub09mZnNldCk7Ci0gICAgICAgICAgICBvZmZz
ZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0OwotICAgICAgICAgICAgcmV0dXJuIGV4
aXN0aW5nVHJhbnNpdGlvbjsKLSAgICAgICAgfQorICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5n
VHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+dGFibGUuZ2V0KG1ha2VfcGFpcihwcm9wZXJ0eU5hbWUu
dXN0cmluZygpLnJlcCgpLCBhdHRyaWJ1dGVzKSwgc3BlY2lmaWNWYWx1ZSkpIHsKKyAgICAgICAg
QVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAgICAg
ICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0OworICAgICAgICByZXR1cm4g
ZXhpc3RpbmdUcmFuc2l0aW9uOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtNDQ3LDE5ICs0
MjMsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbgogCiAgICAgdHJhbnNpdGlvbi0+bV9vZmZz
ZXQgPSBvZmZzZXQ7CiAKLSAgICBpZiAoc3RydWN0dXJlLT5tX3VzaW5nU2luZ2xlVHJhbnNpdGlv
blNsb3QpIHsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvbnMuc2luZ2xlVHJh
bnNpdGlvbikgewotICAgICAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25zLnNpbmdsZVRy
YW5zaXRpb24gPSB0cmFuc2l0aW9uLmdldCgpOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRp
b24ucmVsZWFzZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RydWN0dXJlKiBleGlzdGluZ1Ry
YW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvbnMuc2luZ2xlVHJhbnNpdGlvbjsKLSAg
ICAgICAgc3RydWN0dXJlLT5tX3VzaW5nU2luZ2xlVHJhbnNpdGlvblNsb3QgPSBmYWxzZTsKLSAg
ICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlKiB0cmFuc2l0aW9uVGFibGUgPSBuZXcgU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlOwotICAgICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvbnMu
dGFibGUgPSB0cmFuc2l0aW9uVGFibGU7Ci0gICAgICAgIHRyYW5zaXRpb25UYWJsZS0+YWRkKG1h
a2VfcGFpcihleGlzdGluZ1RyYW5zaXRpb24tPm1fbmFtZUluUHJldmlvdXMuZ2V0KCksIGV4aXN0
aW5nVHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyksIGV4aXN0aW5nVHJhbnNpdGlv
biwgZXhpc3RpbmdUcmFuc2l0aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAgICB9
Ci0gICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25zLnRhYmxlLT5hZGQobWFrZV9wYWlyKHByb3Bl
cnR5TmFtZS51c3RyaW5nKCkucmVwKCksIGF0dHJpYnV0ZXMpLCB0cmFuc2l0aW9uLmdldCgpLCBz
cGVjaWZpY1ZhbHVlKTsKKyAgICBzdHJ1Y3R1cmUtPnRhYmxlLmFkZChtYWtlX3BhaXIocHJvcGVy
dHlOYW1lLnVzdHJpbmcoKS5yZXAoKSwgYXR0cmlidXRlcyksIHRyYW5zaXRpb24uZ2V0KCksIHNw
ZWNpZmljVmFsdWUpOwogICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKIH0KIApAQCAt
NTU4LDggKzUyMiw2IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZyb21EaWN0
aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIAogc2l6ZV90IFN0cnVjdHVy
ZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKLSAg
ICBBU1NFUlQoIW1fdHJhbnNpdGlvbnMuc2luZ2xlVHJhbnNpdGlvbik7Ci0KICAgICBtYXRlcmlh
bGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKIAogICAgIG1faXNQaW5uZWRQcm9wZXJ0eVRh
YmxlID0gdHJ1ZTsKQEAgLTU3Miw3ICs1MzQsNiBAQCBzaXplX3QgU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdQog
CiBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fdHJhbnNpdGlvbnMu
c2luZ2xlVHJhbnNpdGlvbik7CiAgICAgQVNTRVJUKG1faXNEaWN0aW9uYXJ5KTsKIAogICAgIG1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwpAQCAtODI5LDEyICs3OTAsNyBAQCBz
aXplX3QgU3RydWN0dXJlOjpwdXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbAogCiBib29sIFN0cnVjdHVyZTo6aGFzVHJhbnNpdGlvbihV
U3RyaW5nOjpSZXAqIHJlcCwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKLSAgICBpZiAobV91c2lu
Z1NpbmdsZVRyYW5zaXRpb25TbG90KSB7Ci0gICAgICAgIHJldHVybiBtX3RyYW5zaXRpb25zLnNp
bmdsZVRyYW5zaXRpb24KLSAgICAgICAgICAgICYmIG1fdHJhbnNpdGlvbnMuc2luZ2xlVHJhbnNp
dGlvbi0+bV9uYW1lSW5QcmV2aW91cyA9PSByZXAKLSAgICAgICAgICAgICYmIG1fdHJhbnNpdGlv
bnMuc2luZ2xlVHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyA9PSBhdHRyaWJ1dGVz
OwotICAgIH0KLSAgICByZXR1cm4gbV90cmFuc2l0aW9ucy50YWJsZS0+aGFzVHJhbnNpdGlvbiht
YWtlX3BhaXIocmVwLCBhdHRyaWJ1dGVzKSk7CisgICAgcmV0dXJuIHRhYmxlLmhhc1RyYW5zaXRp
b24obWFrZV9wYWlyKHJlcCwgYXR0cmlidXRlcykpOwogfQogCiBzaXplX3QgU3RydWN0dXJlOjpy
ZW1vdmUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKaW5kZXggMjlmYjMwOS4uOTIwZTU2YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0cnVj
dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZT4gewogICAgIHB1YmxpYzoKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGUo
SlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbykKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJ1Y3R1cmUocHJvdG90eXBlLCB0eXBl
SW5mbykpOwpAQCAtMTc0LDEwICsxNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVm
UHRyPFVTdHJpbmc6OlJlcD4gbV9uYW1lSW5QcmV2aW91czsKICAgICAgICAgSlNDZWxsKiBtX3Nw
ZWNpZmljVmFsdWVJblByZXZpb3VzOwogCi0gICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgIFN0
cnVjdHVyZSogc2luZ2xlVHJhbnNpdGlvbjsKLSAgICAgICAgICAgIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZSogdGFibGU7Ci0gICAgICAgIH0gbV90cmFuc2l0aW9uczsKKyAgICAgICAgU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlIHRhYmxlOwogCiAgICAgICAgIFJlZlB0cjxQcm9wZXJ0eU5hbWVB
cnJheURhdGE+IG1fY2FjaGVkUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogCkBAIC0xODksNyArMTg3
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9pc0RpY3Rpb25hcnkgOiAxOwog
ICAgICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKICAgICAgICAgYm9vbCBt
X2hhc0dldHRlclNldHRlclByb3BlcnRpZXMgOiAxOwotICAgICAgICBib29sIG1fdXNpbmdTaW5n
bGVUcmFuc2l0aW9uU2xvdCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fYXR0cmlidXRlc0luUHJl
dmlvdXMgOiA3OwogICAgIH07CiAKQEAgLTI0MCw4ICsyMzcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgCiAgICAgYm9vbCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmNvbnRhaW5zKGNvbnN0
IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZUhhc2g6OktleSYga2V5LCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpCiAgICAgewotICAgICAgICBUcmFuc2l0aW9uVGFibGU6Oml0ZXJhdG9yIGZpbmQgPSBt
X3RhYmxlLmZpbmQoa2V5KTsKLSAgICAgICAgaWYgKGZpbmQgPT0gbV90YWJsZS5lbmQoKSkKKyAg
ICAgICAgaWYgKHVzaW5nU2luZ2xlVHJhbnNpdGlvblNsb3QoKSkgeworICAgICAgICAgICAgU3Ry
dWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzaW5nbGVUcmFuc2l0aW9uKCk7CisgICAgICAg
ICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uICYmIGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9u
YW1lSW5QcmV2aW91cy5nZXQoKSA9PSBrZXkuZmlyc3QKKyAgICAgICAgICAgICAgICAgICAmJiBl
eGlzdGluZ1RyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPT0ga2V5LnNlY29uZAor
ICAgICAgICAgICAgICAgICAgICYmIChleGlzdGluZ1RyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1
ZUluUHJldmlvdXMgPT0gc3BlY2lmaWNWYWx1ZSB8fCBleGlzdGluZ1RyYW5zaXRpb24tPm1fc3Bl
Y2lmaWNWYWx1ZUluUHJldmlvdXMgPT0gMCk7CisgICAgICAgIH0KKyAgICAgICAgVHJhbnNpdGlv
blRhYmxlOjppdGVyYXRvciBmaW5kID0gdGFibGUoKS0+ZmluZChrZXkpOworICAgICAgICBpZiAo
ZmluZCA9PSB0YWJsZSgpLT5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICByZXR1cm4gZmluZC0+c2Vjb25kLmZpcnN0IHx8IGZpbmQtPnNlY29uZC5zZWNvbmQtPnRy
YW5zaXRpb25lZEZvcihzcGVjaWZpY1ZhbHVlKTsKQEAgLTI0OSwxMSArMjUyLDQwIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgU3RydWN0dXJlKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Omdl
dChjb25zdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVIYXNoOjpLZXkmIGtleSwgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKSBjb25zdAogICAgIHsKLSAgICAgICAgVHJhbnNpdGlvbiB0cmFuc2l0aW9u
ID0gbV90YWJsZS5nZXQoa2V5KTsKKyAgICAgICAgaWYgKHVzaW5nU2luZ2xlVHJhbnNpdGlvblNs
b3QoKSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzaW5n
bGVUcmFuc2l0aW9uKCk7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmFuc2l0aW9uICYmIGV4
aXN0aW5nVHJhbnNpdGlvbi0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSA9PSBrZXkuZmlyc3QKKyAg
ICAgICAgICAgICAgICAmJiBleGlzdGluZ1RyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlv
dXMgPT0ga2V5LnNlY29uZAorICAgICAgICAgICAgICAgICYmIChleGlzdGluZ1RyYW5zaXRpb24t
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPT0gc3BlY2lmaWNWYWx1ZSB8fCBleGlzdGluZ1Ry
YW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPT0gMCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICB9CisKKyAgICAgICAgVHJhbnNpdGlvbiB0cmFuc2l0aW9uID0gdGFibGUoKS0+Z2V0KGtl
eSk7CiAgICAgICAgIGlmICh0cmFuc2l0aW9uLnNlY29uZCAmJiB0cmFuc2l0aW9uLnNlY29uZC0+
dHJhbnNpdGlvbmVkRm9yKHNwZWNpZmljVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHRyYW5z
aXRpb24uc2Vjb25kOwogICAgICAgICByZXR1cm4gdHJhbnNpdGlvbi5maXJzdDsKICAgICB9CisK
KyAgICBib29sIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6aGFzVHJhbnNpdGlvbihjb25zdCBT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVIYXNoOjpLZXkmIGtleSkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmICh1c2luZ1NpbmdsZVRyYW5zaXRpb25TbG90KCkpIHsKKyAgICAgICAgICAgIFN0cnVj
dHVyZSogdHJhbnNpdGlvbiA9IHNpbmdsZVRyYW5zaXRpb24oKTsKKyAgICAgICAgICAgIHJldHVy
biB0cmFuc2l0aW9uICYmIHRyYW5zaXRpb24tPm1fbmFtZUluUHJldmlvdXMgPT0ga2V5LmZpcnN0
CisgICAgICAgICAgICAmJiB0cmFuc2l0aW9uLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzID09IGtl
eS5zZWNvbmQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhYmxlKCktPmNvbnRhaW5zKGtl
eSk7CisgICAgfQorICAgIAorICAgIHZvaWQgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpyZWlm
eVNpbmdsZVRyYW5zaXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHVzaW5nU2luZ2xlVHJh
bnNpdGlvblNsb3QoKSk7CisgICAgICAgIFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0g
c2luZ2xlVHJhbnNpdGlvbigpOworICAgICAgICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9uKTsK
KyAgICAgICAgVHJhbnNpdGlvblRhYmxlKiB0cmFuc2l0aW9uVGFibGUgPSBuZXcgVHJhbnNpdGlv
blRhYmxlOworICAgICAgICBzZXRUcmFuc2l0aW9uVGFibGUodHJhbnNpdGlvblRhYmxlKTsKKyAg
ICAgICAgYWRkKG1ha2VfcGFpcihleGlzdGluZ1RyYW5zaXRpb24tPm1fbmFtZUluUHJldmlvdXMu
Z2V0KCksIGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyksIGV4aXN0
aW5nVHJhbnNpdGlvbiwgZXhpc3RpbmdUcmFuc2l0aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZp
b3VzKTsKKyAgICB9CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0cnVjdHVyZV9o
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aAppbmRleCA1YjRmNGU2Li5kYjdhODUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTY5LDQzICs2OSw4NSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8U3RydWN0dXJlKiwgU3RydWN0dXJl
Kj4gVHJhbnNpdGlvbjsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZUhhc2g6OktleSwgVHJhbnNpdGlvbiwgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlSGFz
aCwgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlSGFzaFRyYWl0cz4gVHJhbnNpdGlvblRhYmxlOwog
ICAgIHB1YmxpYzoKKyAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlKCkgeworICAgICAg
ICAgICAgbV90cmFuc2l0aW9ucy5tX3NpbmdsZVRyYW5zaXRpb24gPSAxOworICAgICAgICB9CisK
KyAgICAgICAgflN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSgpIHsKKyAgICAgICAgICAgIGlmICgh
dXNpbmdTaW5nbGVUcmFuc2l0aW9uU2xvdCgpKQorICAgICAgICAgICAgICAgIGRlbGV0ZSB0YWJs
ZSgpOworICAgICAgICB9CisKICAgICAgICAgLy8gVGhlIGNvbnRhaW5zIGFuZCBnZXQgbWV0aG9k
cyBhY2NlcHQgaW1wcmVjaXNlIG1hdGNoZXMsIHNvIGlmIGFuIHVuc3BlY2lhbGlzZWQgdHJhbnNp
dGlvbiBleGlzdHMKICAgICAgICAgLy8gZm9yIHRoZSBnaXZlbiBrZXkgdGhleSB3aWxsIGNvbnNp
ZGVyIHRoYXQgdHJhbnNpdGlvbiB0byBiZSBhIG1hdGNoLiAgSWYgYSBzcGVjaWFsaXNlZCB0cmFu
c2l0aW9uCiAgICAgICAgIC8vIGV4aXN0cyBhbmQgaXQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgc3Bl
Y2lmaWNWYWx1ZSwgZ2V0IHdpbGwgcmV0dXJuIHRoZSBzcGVjaWZpYyB0cmFuc2l0aW9uLgogICAg
ICAgICBpbmxpbmUgYm9vbCBjb250YWlucyhjb25zdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVI
YXNoOjpLZXkmLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBpbmxpbmUgU3RydWN0
dXJlKiBnZXQoY29uc3QgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlSGFzaDo6S2V5JiwgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKSBjb25zdDsKLSAgICAgICAgYm9vbCBoYXNUcmFuc2l0aW9uKGNvbnN0
IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZUhhc2g6OktleSYga2V5KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbV90YWJsZS5jb250YWlucyhrZXkpOwotICAgICAgICB9CisgICAgICAg
IGlubGluZSBib29sIGhhc1RyYW5zaXRpb24oY29uc3QgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
SGFzaDo6S2V5JiBrZXkpIGNvbnN0OwogICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGVIYXNoOjpLZXkmIGtleSwgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBUcmFuc2l0aW9uVGFibGU6Oml0ZXJhdG9yIGZpbmQgPSBt
X3RhYmxlLmZpbmQoa2V5KTsKKyAgICAgICAgICAgIGlmICh1c2luZ1NpbmdsZVRyYW5zaXRpb25T
bG90KCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoY29udGFpbnMoa2V5LCBzcGVjaWZpY1Zh
bHVlKSk7CisgICAgICAgICAgICAgICAgc2V0U2luZ2xlVHJhbnNpdGlvbigwKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUcmFuc2l0aW9uVGFi
bGU6Oml0ZXJhdG9yIGZpbmQgPSB0YWJsZSgpLT5maW5kKGtleSk7CiAgICAgICAgICAgICBpZiAo
IXNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICAgICAgZmluZC0+c2Vjb25kLmZpcnN0ID0gMDsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmaW5kLT5zZWNvbmQuc2Vjb25kID0g
MDsKICAgICAgICAgICAgIGlmICghZmluZC0+c2Vjb25kLmZpcnN0ICYmICFmaW5kLT5zZWNvbmQu
c2Vjb25kKQotICAgICAgICAgICAgICAgIG1fdGFibGUucmVtb3ZlKGZpbmQpOworICAgICAgICAg
ICAgICAgIHRhYmxlKCktPnJlbW92ZShmaW5kKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFk
ZChjb25zdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVIYXNoOjpLZXkmIGtleSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHVzaW5nU2luZ2xlVHJhbnNpdGlvblNsb3QoKSkgeworICAgICAgICAgICAgICAgIGlm
ICghc2luZ2xlVHJhbnNpdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFNpbmdsZVRy
YW5zaXRpb24oc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZWlmeVNpbmdsZVRyYW5zaXRpb24oKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3BlY2lmaWNWYWx1ZSkgewotICAgICAgICAg
ICAgICAgIFRyYW5zaXRpb25UYWJsZTo6aXRlcmF0b3IgZmluZCA9IG1fdGFibGUuZmluZChrZXkp
OwotICAgICAgICAgICAgICAgIGlmIChmaW5kID09IG1fdGFibGUuZW5kKCkpCi0gICAgICAgICAg
ICAgICAgICAgIG1fdGFibGUuYWRkKGtleSwgVHJhbnNpdGlvbihzdHJ1Y3R1cmUsIDApKTsKKyAg
ICAgICAgICAgICAgICBUcmFuc2l0aW9uVGFibGU6Oml0ZXJhdG9yIGZpbmQgPSB0YWJsZSgpLT5m
aW5kKGtleSk7CisgICAgICAgICAgICAgICAgaWYgKGZpbmQgPT0gdGFibGUoKS0+ZW5kKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRhYmxlKCktPmFkZChrZXksIFRyYW5zaXRpb24oc3RydWN0dXJl
LCAwKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBmaW5kLT5z
ZWNvbmQuZmlyc3QgPSBzdHJ1Y3R1cmU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIElmIHdlJ3JlIGFkZGluZyBhIHRyYW5zaXRpb24gdG8gYSBzcGVjaWZpYyB2YWx1
ZSwgdGhlbiB0aGVyZSBjYW5ub3QgYmUKICAgICAgICAgICAgICAgICAvLyBhbiBleGlzdGluZyB0
cmFuc2l0aW9uCi0gICAgICAgICAgICAgICAgQVNTRVJUKCFtX3RhYmxlLmNvbnRhaW5zKGtleSkp
OwotICAgICAgICAgICAgICAgIG1fdGFibGUuYWRkKGtleSwgVHJhbnNpdGlvbigwLCBzdHJ1Y3R1
cmUpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXRhYmxlKCktPmNvbnRhaW5zKGtleSkpOwor
ICAgICAgICAgICAgICAgIHRhYmxlKCktPmFkZChrZXksIFRyYW5zaXRpb24oMCwgc3RydWN0dXJl
KSk7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIFRy
YW5zaXRpb25UYWJsZSBtX3RhYmxlOworICAgICAgICBUcmFuc2l0aW9uVGFibGUqIHRhYmxlKCkg
Y29uc3QgeyBBU1NFUlQoIXVzaW5nU2luZ2xlVHJhbnNpdGlvblNsb3QoKSk7IHJldHVybiBtX3Ry
YW5zaXRpb25zLm1fdGFibGU7IH0KKyAgICAgICAgU3RydWN0dXJlKiBzaW5nbGVUcmFuc2l0aW9u
KCkgY29uc3QgeworICAgICAgICAgICAgQVNTRVJUKHVzaW5nU2luZ2xlVHJhbnNpdGlvblNsb3Qo
KSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmUqPihtX3Ry
YW5zaXRpb25zLm1fc2luZ2xlVHJhbnNpdGlvbiAmIH4xKTsKKyAgICAgICAgfQorICAgICAgICBi
b29sIHVzaW5nU2luZ2xlVHJhbnNpdGlvblNsb3QoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zaXRp
b25zLm1fc2luZ2xlVHJhbnNpdGlvbiAmIDE7IH0KKyAgICAgICAgdm9pZCBzZXRTaW5nbGVUcmFu
c2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICB7IAorICAgICAgICAgICAgQVNT
RVJUKHVzaW5nU2luZ2xlVHJhbnNpdGlvblNsb3QoKSk7CisgICAgICAgICAgICBtX3RyYW5zaXRp
b25zLm1fc2luZ2xlVHJhbnNpdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHN0cnVj
dHVyZSkgfCAxOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRUcmFuc2l0aW9uVGFibGUo
VHJhbnNpdGlvblRhYmxlKiB0YWJsZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHVz
aW5nU2luZ2xlVHJhbnNpdGlvblNsb3QoKSk7CisgICAgICAgICAgICBtX3RyYW5zaXRpb25zLm1f
dGFibGUgPSB0YWJsZTsKKyAgICAgICAgICAgIC8vIFRoaXMgaW1wbGljaXRseSBjbGVhcnMgdGhl
IGZsYWcgdGhhdCBpbmRpY2F0ZXMgd2UncmUgdXNpbmcgYSBzaW5nbGUgdHJhbnNpdGlvbgorICAg
ICAgICAgICAgQVNTRVJUKCF1c2luZ1NpbmdsZVRyYW5zaXRpb25TbG90KCkpOworICAgICAgICB9
CisgICAgICAgIGlubGluZSB2b2lkIHJlaWZ5U2luZ2xlVHJhbnNpdGlvbigpOworICAgICAgICAK
KyAgICAgICAgLy8gTGFzdCBiaXQgaW5kaWNhdGVzIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBz
aW5nbGUgdHJhbnNpdGlvbiBvcHRpbWlzYXRpb24KKyAgICAgICAgdW5pb24geworICAgICAgICAg
ICAgVHJhbnNpdGlvblRhYmxlKiBtX3RhYmxlOworICAgICAgICAgICAgaW50cHRyX3QgbV9zaW5n
bGVUcmFuc2l0aW9uOworICAgICAgICB9IG1fdHJhbnNpdGlvbnM7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlND
</data>
<flag name="review"
          id="20458"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>