<?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>123516</bug_id>
          
          <creation_ts>2013-10-30 10:57:27 -0700</creation_ts>
          <short_desc>Web Inspector: Moving an element while in the DOMNodeRemoved handler will hide it in the inspector</short_desc>
          <delta_ts>2013-11-05 18:13:55 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>945016</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-30 10:57:27 -0700</bug_when>
    <thetext>1. Open the attached example.
2. Open the inspector.
3. Make sure the #final_container element is visible in the DOM tree.
4. Click the &quot;Test&quot; button.

Expected Result:
#element should move under the #final_container.

Actual Result:
#element disappears from the DOM tree.

The test attaches to #element&apos;s DOMNodeRemoved event. When the handler is triggered it will move the element inside #final_container.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945017</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-30 10:57:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/15352934&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945021</commentid>
    <comment_count>2</comment_count>
      <attachid>215526</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-30 10:59:08 -0700</bug_when>
    <thetext>Created attachment 215526
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945024</commentid>
    <comment_count>3</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-30 10:59:59 -0700</bug_when>
    <thetext>This is the error I see in the console.

Release/WebInspectorUI.framework/Resources/DOMNode.js:553: JS ERROR: TypeError: undefined is not an object (evaluating &apos;node.parentNode = null&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945150</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-30 13:23:45 -0700</bug_when>
    <thetext>Nice catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945175</commentid>
    <comment_count>5</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-30 14:00:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Nice catch!

The problem is that the API will send two removal notifications for the same node. The first one will &quot;unbind&quot; it, so the second one will just have a nodeId === 0.

I guess we need to fix both the API and the JS side as the inspector should be backwards compatible.

Blink seems to have the same issue, just that their JS will recover from the error. The next message will just reinsert #final_container and all its children, so the #element gets fixed.

The content flow API I&apos;ve just added has the same issue. It sends a nodeId === 0 when the node is removed from the DOM. That&apos;s because the node is unbound first and then the new API will just fallback to nodeId === 0.

I&apos;ve just filed another one related to iframes. Nothing to do with the inspector. https://bugs.webkit.org/show_bug.cgi?id=123529

It all seems to be related to the fact that the node removal notification comes before related JS events execute. The C++ after it will abort the removal if the node has changed the parent, but, there are a couple of things that still happen anyway. For example frames are disconnected even though the element was just moved somewhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947333</commentid>
    <comment_count>6</comment_count>
      <attachid>216073</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-11-05 13:49:05 -0800</bug_when>
    <thetext>Created attachment 216073
Patch V1

Adding fix for the protocol issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947444</commentid>
    <comment_count>7</comment_count>
      <attachid>216073</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-05 18:13:53 -0800</bug_when>
    <thetext>Comment on attachment 216073
Patch V1

Clearing flags on attachment: 216073

Committed r158708: &lt;http://trac.webkit.org/changeset/158708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947445</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-05 18:13:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>215526</attachid>
            <date>2013-10-30 10:59:08 -0700</date>
            <delta_ts>2013-11-05 13:49:05 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>dom-remove-events.html</filename>
            <type>text/html</type>
            <size>651</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgogICAgPHN0eWxlPgogICAgICAgICNlbGVtZW50IHsKICAgICAgICAgICAg
Ym9yZGVyOiA1cHggc29saWQgYmx1ZTsKICAgICAgICB9CiAgICAgICAgI2ZpbmFsX2NvbnRhaW5l
ciB7CiAgICAgICAgICAgIGJvcmRlcjogNXB4IHNvbGlkIGdyZWVuOwogICAgICAgIH0KICAgIDwv
c3R5bGU+CjxzY3JpcHQ+CmZ1bmN0aW9uIHRlc3QoKQp7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZWxlbWVudCIpOwogICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9k
ZVJlbW92ZWQiLCBmdW5jdGlvbigpIHsKICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCJE
T01Ob2RlUmVtb3ZlZCIsIGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJmaW5hbF9jb250YWluZXIiKS5hcHBlbmRDaGlsZCh0aGlzKTsKICAgIH0pOwog
ICAgZWwucmVtb3ZlKCk7Cn0KPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+Cgo8YnV0dG9uIG9uY2xp
Y2s9InRlc3QoKSI+VGVzdDwvYnV0dG9uPgoKPGRpdiBpZD0iZWxlbWVudCI+ZWxlbWVudCB0byBi
ZSByZW1vdmVkPC9kaXY+CjxkaXYgaWQ9ImZpbmFsX2NvbnRhaW5lciI+ZmluYWwgY29udGFpbmVy
PC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216073</attachid>
            <date>2013-11-05 13:49:05 -0800</date>
            <delta_ts>2013-11-05 18:13:53 -0800</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug123516.patch</filename>
            <type>text/plain</type>
            <size>21072</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1Y2E2MTk2Li5jNzQ2MGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMTEt
MDQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE1vdmluZyBhbiBlbGVtZW50IHdoaWxlIGluIHRoZSBET01Ob2RlUmVtb3Zl
ZCBoYW5kbGVyIHdpbGwgaGlkZSBpdCBpbiB0aGUgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM1MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyB0byBjaGVjayB0aGF0
IHRoZSBET00uY2hpbGROb2RlUmVtb3ZlZCBpbnNwZWN0b3ItcHJvdG9jb2wgbWVzc2FnZSBpcyBk
aXNwYXRjaGVkCisgICAgICAgIGNvcnJlY3RseSB3aGVuIERPTSBub2RlcyBhcmUgbW92ZWQgd2hp
bGUgaW5zaWRlIHRoZSAiRE9NTm9kZVJlbW92ZWQiIGV2ZW50IGhhbmRsZXIuCisKKyAgICAgICAg
KiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tLWRlYnVnZ2VyL25vZGUtcmVtb3ZlZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kb20tZGVidWdnZXIvbm9k
ZS1yZW1vdmVkLmh0bWw6IEFkZGVkLiBDaGVja2luZyB0aGF0IHRoZSBET01EZWJ1Z2dlciBhZ2Vu
dCAKKyAgICAgICAgaXMgc3RpbGwgc2VuZGluZyB0aGUgbm9kZS1yZW1vdmVkIGV2ZW50cy4KKyAg
ICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1yZW1vdmUtZXZlbnRzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tcmVtb3Zl
LWV2ZW50cy5odG1sOiBBZGRlZC4gVGVzdCB3aXRoIGEgc2luZ2xlIERPTSByZW1vdmUgZXZlbnQu
CisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZW1vdmUtbXVsdGlwbGUtbm9kZXMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3Jl
bW92ZS1tdWx0aXBsZS1ub2Rlcy5odG1sOiBBZGRlZC4gVGVzdCBjYXNlIHdoZW4gbXVsdGlwbGUg
Y2hpbGRyZW4KKyAgICAgICAgYXJlIHJlbW92ZWQgYXQgb25jZSB3aXRoIHBhcmVudE5vZGUudGV4
dENvbnRlbnQgPSAiU3RyaW5nIi4KKwogMjAxMy0xMS0wNSAgUmVuYXRhIEhvZG92YW4gIDxyZW5p
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogaXNIVE1MVGl0bGVFbGVt
ZW50KG1fdGl0bGVFbGVtZW50LmdldCgpKSBpbiBXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tZGVidWdnZXIv
bm9kZS1yZW1vdmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20tZGVidWdnZXIvbm9kZS1yZW1vdmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lY2VjNTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1kZWJ1Z2dlci9ub2RlLXJlbW92ZWQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdGluZyB0aGF0IERPTS5jaGlsZE5vZGVSZW1vdmVkIGlz
IGNvcnJlY3RseSB0cmlnZ2VyZWQgZXZlbiB3aGVuIHRoZSBlbGVtZW50IGlzIG1vdmVkIHdoaWxl
IHBhdXNlZCBpbiB0aGUgZGVidWdnZXIgb24gYSBET01EZWJ1Z2dlciAibm9kZS1yZW1vdmVkIiBi
cmVha3BvaW50LgorCitCcmVha3BvaW50cyBFbmFibGVkCitGb3VuZCA8c2NyaXB0PgorU3RvcHBl
ZCBvbiBET00gYnJlYWtwb2ludAorUEFTUzogb25DaGlsZE5vZGVSZW1vdmVkIGNhbGxlZCBmb3Ig
I3RhcmdldF9lbGVtZW50CitQQVNTOiBvbkNoaWxkTm9kZUluc2VydGVkIGNhbGxlZCBmb3IgcGFy
ZW50IG5vZGUgI2ZpbmFsX2NvbnRhaW5lcgorUEFTUzogb25DaGlsZE5vZGVJbnNlcnRlZCBjYWxs
ZWQgZm9yIGNoaWxkIG5vZGUgI3RhcmdldF9lbGVtZW50CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tZGVidWdnZXIvbm9kZS1yZW1vdmVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLWRlYnVnZ2VyL25vZGUtcmVtb3ZlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MDRlNDUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLWRlYnVnZ2VyL25v
ZGUtcmVtb3ZlZC5odG1sCkBAIC0wLDAgKzEsMTQ2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K3dpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworCitmdW5jdGlvbiByZW1vdmVOb2RlKCkKK3sKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0X2VsZW1lbnQiKS5yZW1vdmUoKTsKK30K
KworZnVuY3Rpb24gbW92ZU5vZGUoKQoreworICAgIHZhciB0YXJnZXRFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldF9lbGVtZW50Iik7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZpbmFsX2NvbnRhaW5lciIpLmFwcGVuZENoaWxkKHRhcmdldEVsZW1lbnQpOwor
fQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgbm9kZXNCeUlkID0ge307CisKKyAgICBJ
bnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsiRE9NLnNldENoaWxkTm9kZXMiXSA9IG9uU2V0Q2hp
bGROb2RlczsKKyAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsiRE9NLmNoaWxkTm9kZVJl
bW92ZWQiXSA9IG9uQ2hpbGROb2RlUmVtb3ZlZDsKKyAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFu
ZGxlclsiRE9NLmNoaWxkTm9kZUluc2VydGVkIl0gPSBvbkNoaWxkTm9kZUluc2VydGVkOworICAg
IEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJEZWJ1Z2dlci5wYXVzZWQiXSA9IG9uRGVidWdn
ZXJQYXVzZWQ7CisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRlYnVnZ2VyLnNjcmlw
dFBhcnNlZCJdID0gb25TY3JpcHRQYXJzZWQ7CisgICAgCisgICAgZnVuY3Rpb24gY3JlYXRlTm9k
ZUF0dHJpYnV0ZXNNYXAoYXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVz
TWFwID0ge307CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7
IGkgKz0gMikKKyAgICAgICAgICAgIGF0dHJpYnV0ZXNNYXBbYXR0cmlidXRlc1tpXV0gPSBhdHRy
aWJ1dGVzW2kgKyAxXTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNNYXA7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gY29sbGVjdE5vZGUobm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLm5v
ZGVUeXBlID09PSAxKQorICAgICAgICAgICAgbm9kZS5hdHRyaWJ1dGVzID0gY3JlYXRlTm9kZUF0
dHJpYnV0ZXNNYXAobm9kZS5hdHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4p
CisgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goY29sbGVjdE5vZGUpOworICAgICAg
ICBub2Rlc0J5SWRbbm9kZS5ub2RlSWRdID0gbm9kZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBu
b2RlVG9TdHJpbmcobm9kZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkg
eworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1cm4gbm9kZS5sb2NhbE5hbWUgKyAi
IyIgKyBub2RlLmF0dHJpYnV0ZXMuaWQ7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHJl
dHVybiAiPHRleHQgbm9kZSAiICsgSlNPTi5zdHJpbmdpZnkobm9kZS5ub2RlVmFsdWUpICsgIj4i
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICI8bm9kZVR5cGUgIiArIG5v
ZGUubm9kZVR5cGUgKyAiPiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRO
b2RlSWRlbnRpZmllcihub2RlSWQpCisgICAgeworICAgICAgICBpZiAoIW5vZGVJZCkKKyAgICAg
ICAgICAgIHJldHVybiAiPGludmFsaWQgbm9kZSBpZD4iOworICAgICAgICB2YXIgbm9kZSA9IG5v
ZGVzQnlJZFtub2RlSWRdOworICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGVUb1N0cmluZyhub2Rl
KSA6ICI8dW5rbm93biBub2RlPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25TZXRDaGlsZE5v
ZGVzKHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgcmVzcG9uc2UucGFyYW1zLm5vZGVzLmZvckVh
Y2goY29sbGVjdE5vZGUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uQ2hpbGROb2RlUmVtb3Zl
ZChyZXNwb25zZSkKKyAgICB7CisgICAgICAgIHZhciBub2RlSWQgPSByZXNwb25zZS5wYXJhbXMu
bm9kZUlkOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChnZXROb2RlSWRlbnRpZmllcihu
b2RlSWQpID09PSAiZGl2I3RhcmdldF9lbGVtZW50IiwgIm9uQ2hpbGROb2RlUmVtb3ZlZCBjYWxs
ZWQgZm9yICN0YXJnZXRfZWxlbWVudCIpOworICAgICAgICBkZWxldGUgbm9kZXNCeUlkW25vZGVJ
ZF07CisgICAgfQorCisgICAgZnVuY3Rpb24gb25DaGlsZE5vZGVJbnNlcnRlZChyZXNwb25zZSkK
KyAgICB7CisgICAgICAgIGNvbGxlY3ROb2RlKHJlc3BvbnNlLnBhcmFtcy5ub2RlKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZ2V0Tm9kZUlkZW50aWZpZXIocmVzcG9uc2UucGFyYW1z
LnBhcmVudE5vZGVJZCkgPT09ICJkaXYjZmluYWxfY29udGFpbmVyIiwgIm9uQ2hpbGROb2RlSW5z
ZXJ0ZWQgY2FsbGVkIGZvciBwYXJlbnQgbm9kZSAjZmluYWxfY29udGFpbmVyIik7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KGdldE5vZGVJZGVudGlmaWVyKHJlc3BvbnNlLnBhcmFtcy5u
b2RlLm5vZGVJZCkgPT09ICJkaXYjdGFyZ2V0X2VsZW1lbnQiLCAib25DaGlsZE5vZGVJbnNlcnRl
ZCBjYWxsZWQgZm9yIGNoaWxkIG5vZGUgI3RhcmdldF9lbGVtZW50Iik7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gb25EZWJ1Z2dlclBhdXNlZChyZXNwb25zZSkKKyAgICB7ICAgCisgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJTdG9wcGVkIG9uIERPTSBicmVha3BvaW50Iik7CisgICAgICAgIElu
c3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIlJ1bnRpbWUuZXZhbHVhdGUiLCB7ImV4cHJlc3Npb24i
OiAibW92ZU5vZGUoKSJ9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
c2VuZENvbW1hbmQoIkRlYnVnZ2VyLnJlc3VtZSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25T
Y3JpcHRQYXJzZWQobWVzc2FnZU9iamVjdCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGUg
RE9NIGJyZWFrcG9pbnRzIGFyZSBub3Qgd29ya2luZyB1bmxlc3MgdGhlcmUncyBhIEpTIGJyYWtw
b2ludCBzZXQuIFNldHRpbmcgYSBmYWtlIGJyZWFrcG9pbnQgdG8gd29ya2Fyb3VuZCB0aGF0Lgor
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNzcw
IAorICAgICAgICBpZiAoL25vZGUtcmVtb3ZlZFwuaHRtbCQvLnRlc3QobWVzc2FnZU9iamVjdC5w
YXJhbXMudXJsKSAmJiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5zdGFydExpbmUgPiAyMCkgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRlYnVnZ2VyLnNjcmlwdFBhcnNl
ZCJdID0gbnVsbDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGb3VuZCA8c2NyaXB0
PiIpOworICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0ge3NjcmlwdElkOiBtZXNzYWdlT2JqZWN0
LnBhcmFtcy5zY3JpcHRJZCwgbGluZU51bWJlcjogbWVzc2FnZU9iamVjdC5wYXJhbXMuc3RhcnRM
aW5lICsgMiwgY29sdW1uTnVtYmVyOiAwfTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2Vu
ZENvbW1hbmQoIkRlYnVnZ2VyLnNldEJyZWFrcG9pbnQiLCB7bG9jYXRpb246IGxvY2F0aW9ufSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgi
RE9NLmdldERvY3VtZW50Iiwge30sIG9uR290RG9jdW1lbnQpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbkdvdERvY3VtZW50KHJlc3BvbnNlKQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja0ZvckVycm9yKHJlc3BvbnNlKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLnF1ZXJ5U2VsZWN0b3JBbGwiLCB7
Im5vZGVJZCI6IHJlc3BvbnNlLnJlc3VsdC5yb290Lm5vZGVJZCwgInNlbGVjdG9yIjogIiN0YXJn
ZXRfZWxlbWVudCwjZmluYWxfY29udGFpbmVyIn0sIG9uUXVlcnlTZWxlY3RvckFsbCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gb25RdWVyeVNlbGVjdG9yQWxsKHJlc3BvbnNlKQorICAgIHsKKyAg
ICAgICAgdmFyIHRhcmdldEVsZW1lbnRJZCA9IHJlc3BvbnNlLnJlc3VsdC5ub2RlSWRzWzBdOwor
ICAgICAgICB2YXIgZmluYWxDb250YWluZXJJZCA9IHJlc3BvbnNlLnJlc3VsdC5ub2RlSWRzWzFd
OworCisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTURlYnVnZ2VyLnNldERP
TUJyZWFrcG9pbnQiLCB7bm9kZUlkOiB0YXJnZXRFbGVtZW50SWQsIHR5cGU6ICJub2RlLXJlbW92
ZWQifSk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5yZXF1ZXN0Q2hp
bGROb2RlcyIsIHtub2RlSWQ6IGZpbmFsQ29udGFpbmVySWR9KTsKKworICAgICAgICBJbnNwZWN0
b3JUZXN0LnNlbmRDb21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwgeyJleHByZXNzaW9uIjogInJl
bW92ZU5vZGUoKSJ9KTsgICAgICAgIAorICAgIH0KKworICAgIEluc3BlY3RvclRlc3Quc2VuZENv
bW1hbmQoIkRlYnVnZ2VyLmVuYWJsZSIsIHt9KTsKKyAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21t
YW5kKCJEZWJ1Z2dlci5zZXRCcmVha3BvaW50c0FjdGl2ZSIsIHthY3RpdmU6IHRydWV9LCBmdW5j
dGlvbigpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnRzIEVuYWJsZWQi
KTsKKyAgICB9KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwPlRlc3Rpbmcg
dGhhdCBET00uY2hpbGROb2RlUmVtb3ZlZCBpcyBjb3JyZWN0bHkgdHJpZ2dlcmVkIGV2ZW4gd2hl
biB0aGUgZWxlbWVudCBpcyBtb3ZlZCB3aGlsZSBwYXVzZWQgaW4gdGhlIGRlYnVnZ2VyIG9uIGEg
RE9NRGVidWdnZXIgIm5vZGUtcmVtb3ZlZCIgYnJlYWtwb2ludC48L3A+CisKKzxkaXYgaWQ9InRh
cmdldF9lbGVtZW50Ij48L2Rpdj4KKzxkaXYgaWQ9ImZpbmFsX2NvbnRhaW5lciI+PC9kaXY+CisK
KzwhLS0gU2NyaXB0IHRhZyByZXF1aXJlZCB0byB3b3JrYXJvdW5kIGJ1ZyAxMjM3NzAuIFNlZSBv
blNjcmlwdFBhcnNlZCBmb3IgZGV0YWlscy4gLS0+Cis8c2NyaXB0Pi8vIExpbmUgMAorZnVuY3Rp
b24gdGVzdEZ1bmN0aW9uKCkgeyAvLyBMaW5lIDEKKyAgICBjb25zb2xlLmxvZygiRkFJTDogV29y
a2Fyb3VuZCBKUyBjb2RlIHNob3VsZCBub3QgcnVuLiIpOworfQorPC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9k
b20vZG9tLXJlbW92ZS1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2RvbS9kb20tcmVtb3ZlLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNmOTNmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXJlbW92ZS1ldmVudHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNiBAQAorVGVzdGluZyB0aGF0IERPTS5jaGlsZE5vZGVSZW1vdmVkIGlz
IGNvcnJlY3RseSB0cmlnZ2VyZWQgb25seSB3aGVuIHRoZSBlbGVtZW50IGlzIGFjdHVhbGx5IGdv
aW5nIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgRE9NLgorCitQQVNTOiBvbkNoaWxkTm9kZVJlbW92
ZWQgY2FsbGVkIGZvciAjdGFyZ2V0X2VsZW1lbnQKK1BBU1M6IG9uQ2hpbGROb2RlSW5zZXJ0ZWQg
Y2FsbGVkIGZvciBwYXJlbnQgbm9kZSAjZmluYWxfY29udGFpbmVyCitQQVNTOiBvbkNoaWxkTm9k
ZUluc2VydGVkIGNhbGxlZCBmb3IgY2hpbGQgbm9kZSAjdGFyZ2V0X2VsZW1lbnQKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tcmVtb3ZlLWV2ZW50
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tcmVtb3ZlLWV2
ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYWE3OTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1y
ZW1vdmUtZXZlbnRzLmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBtb3ZlTm9kZSgpCit7CisgICAgdmFyIHRlcmdldEVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0X2VsZW1lbnQiKTsKKyAgICB0ZXJnZXRFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVSZW1vdmVkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIHRl
cmdldEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCBhcmd1bWVu
dHMuY2FsbGVlKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmFsX2NvbnRh
aW5lciIpLmFwcGVuZENoaWxkKHRoaXMpOworICAgIH0pOworICAgIHRlcmdldEVsZW1lbnQucmVt
b3ZlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBub2Rlc0J5SWQgPSB7fTsK
KworICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJET00uc2V0Q2hpbGROb2RlcyJdID0g
b25TZXRDaGlsZE5vZGVzOworICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJET00uY2hp
bGROb2RlUmVtb3ZlZCJdID0gb25DaGlsZE5vZGVSZW1vdmVkOworICAgIEluc3BlY3RvclRlc3Qu
ZXZlbnRIYW5kbGVyWyJET00uY2hpbGROb2RlSW5zZXJ0ZWQiXSA9IG9uQ2hpbGROb2RlSW5zZXJ0
ZWQ7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVOb2RlQXR0cmlidXRlc01hcChub2RlKQorICAgIHsK
KyAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBpICs9IDIpCisgICAgICAgICAgICBhdHRyaWJ1dGVz
W25vZGUuYXR0cmlidXRlc1tpXV0gPSBub2RlLmF0dHJpYnV0ZXNbaSArIDFdOworICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb2xsZWN0Tm9kZShub2Rl
KQorICAgIHsKKyAgICAgICAgbm9kZXNCeUlkW25vZGUubm9kZUlkXSA9IGNyZWF0ZU5vZGVBdHRy
aWJ1dGVzTWFwKG5vZGUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldE5vZGVJZGVudGlmaWVy
KG5vZGVJZCkKKyAgICB7CisgICAgICAgIHZhciBub2RlID0gbm9kZXNCeUlkW25vZGVJZF07Cisg
ICAgICAgIHJldHVybiBub2RlID8gbm9kZS5pZCA6ICI8dW5rbm93biBub2RlPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gb25TZXRDaGlsZE5vZGVzKHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAg
cmVzcG9uc2UucGFyYW1zLm5vZGVzLmZvckVhY2goY29sbGVjdE5vZGUpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIG9uQ2hpbGROb2RlUmVtb3ZlZChyZXNwb25zZSkKKyAgICB7CisgICAgICAgIHZh
ciBub2RlSWQgPSByZXNwb25zZS5wYXJhbXMubm9kZUlkOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChnZXROb2RlSWRlbnRpZmllcihub2RlSWQpID09PSAidGFyZ2V0X2VsZW1lbnQiLCAi
b25DaGlsZE5vZGVSZW1vdmVkIGNhbGxlZCBmb3IgI3RhcmdldF9lbGVtZW50Iik7CisgICAgICAg
IGRlbGV0ZSBub2Rlc0J5SWRbbm9kZUlkXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbkNoaWxk
Tm9kZUluc2VydGVkKHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgY29sbGVjdE5vZGUocmVzcG9u
c2UucGFyYW1zLm5vZGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChnZXROb2RlSWRl
bnRpZmllcihyZXNwb25zZS5wYXJhbXMucGFyZW50Tm9kZUlkKSA9PT0gImZpbmFsX2NvbnRhaW5l
ciIsICJvbkNoaWxkTm9kZUluc2VydGVkIGNhbGxlZCBmb3IgcGFyZW50IG5vZGUgI2ZpbmFsX2Nv
bnRhaW5lciIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChnZXROb2RlSWRlbnRpZmll
cihyZXNwb25zZS5wYXJhbXMubm9kZS5ub2RlSWQpID09PSAidGFyZ2V0X2VsZW1lbnQiLCAib25D
aGlsZE5vZGVJbnNlcnRlZCBjYWxsZWQgZm9yIGNoaWxkIG5vZGUgI3RhcmdldF9lbGVtZW50Iik7
CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLmdldERvY3VtZW50
Iiwge30sIG9uR290RG9jdW1lbnQpOworCisgICAgZnVuY3Rpb24gb25Hb3REb2N1bWVudChtc2cp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrRm9yRXJyb3IobXNnKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLnF1ZXJ5U2VsZWN0b3IiLCB7Im5vZGVJ
ZCI6IG1zZy5yZXN1bHQucm9vdC5ub2RlSWQsICJzZWxlY3RvciI6ICIjZmluYWxfY29udGFpbmVy
In0sIG9uUXVlcnlTZWxlY3Rvcik7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25RdWVyeVNlbGVj
dG9yKHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHJlY2VpdmUgdGhl
IGNoaWxkcmVuIG9mIHRoZSAiI2ZpbmFsX2NvbnRhaW5lciIgYXMgdGhleSBhcmUgYWRkZWQuCisg
ICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5yZXF1ZXN0Q2hpbGROb2RlcyIs
IHtub2RlSWQ6IHJlc3BvbnNlLnJlc3VsdC5ub2RlSWR9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5zZW5kQ29tbWFuZCgiUnVudGltZS5ldmFsdWF0ZSIsIHsiZXhwcmVzc2lvbiI6ICJtb3ZlTm9k
ZSgpIn0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+CisKKzxwPlRlc3RpbmcgdGhhdCBET00uY2hpbGROb2RlUmVtb3Zl
ZCBpcyBjb3JyZWN0bHkgdHJpZ2dlcmVkIG9ubHkgd2hlbiB0aGUgZWxlbWVudCBpcyBhY3R1YWxs
eSBnb2luZyB0byBiZSByZW1vdmVkIGZyb20gdGhlIERPTS48L3A+CisKKzxkaXYgaWQ9InRhcmdl
dF9lbGVtZW50Ij48L2Rpdj4KKzxkaXYgaWQ9ImZpbmFsX2NvbnRhaW5lciI+PC9kaXY+CisKKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20vcmVtb3ZlLW11bHRpcGxlLW5vZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9kb20vcmVtb3ZlLW11bHRpcGxlLW5vZGVzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTkxMTg0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZW1vdmUtbXVsdGlwbGUt
bm9kZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RpbmcgdGhhdCBET00uY2hp
bGROb2RlUmVtb3ZlZCBpcyBjb3JyZWN0bHkgdHJpZ2dlcmVkIHdoZW4gYWxsIHRoZSBwYXJlbnQg
Y2hpbGRyZW4gb2YgYSBub2RlIGFyZSByZW1vdmVkIGF0IG9uY2UuCisKK1BhcmVudCBjb250YWlu
ZXIgaXMgbm93IGVtcHR5CitUYXJnZXQgZWxlbWVudCBzaG91bGQgaGF2ZSBiZWVuIG1vdmVkIGFm
dGVyIHRoaXMgbGluZToKK1RhcmdldCBlbGVtZW50CisKK1JlbW92aW5nIG5vZGUgZGl2I3Rhcmdl
dF9lbGVtZW50CitJbnNlcnRpbmcgbm9kZSBkaXYjdGFyZ2V0X2VsZW1lbnQgaW50byBwI2ZpbmFs
X2NvbnRhaW5lcgorUmVtb3Zpbmcgbm9kZSBkaXYjYmVmb3JlCitSZW1vdmluZyBub2RlIGRpdiNh
ZnRlcgorSW5zZXJ0aW5nIG5vZGUgPHRleHQgbm9kZSAiUGFyZW50IGNvbnRhaW5lciBpcyBub3cg
ZW1wdHkiPiBpbnRvIGRpdiNwYXJlbnRfY29udGFpbmVyCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vcmVtb3ZlLW11bHRpcGxlLW5vZGVzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3JlbW92ZS1tdWx0aXBsZS1ub2Rlcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NTIxZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3JlbW92ZS1tdWx0
aXBsZS1ub2Rlcy5odG1sCkBAIC0wLDAgKzEsMTE0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIG1vdmVOb2RlKCkKK3sKKyAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRfZWxlbWVudCIpOworICAgIHRhcmdldEVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgdGFy
Z2V0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIGFyZ3VtZW50
cy5jYWxsZWUpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmluYWxfY29udGFp
bmVyIikuYXBwZW5kQ2hpbGQodGhpcyk7CisgICAgfSk7CisgICAgLy8gUmVtb3ZlIGFsbCB0aGUg
Y2hpbGRyZW4gaW5zaWRlIHBhcmVudCBjb250YWluZXIsIGluY2x1ZGluZyAiI3RhcmdldF9lbGVt
ZW50Ii4KKyAgICB2YXIgcGFyZW50Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InBhcmVudF9jb250YWluZXIiKTsKKyAgICBwYXJlbnRDb250YWluZXIudGV4dENvbnRlbnQgPSAi
UGFyZW50IGNvbnRhaW5lciBpcyBub3cgZW1wdHkiOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICB2YXIgbm9kZXNCeUlkID0ge307CisKKyAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxl
clsiRE9NLnNldENoaWxkTm9kZXMiXSA9IG9uU2V0Q2hpbGROb2RlczsKKyAgICBJbnNwZWN0b3JU
ZXN0LmV2ZW50SGFuZGxlclsiRE9NLmNoaWxkTm9kZVJlbW92ZWQiXSA9IG9uQ2hpbGROb2RlUmVt
b3ZlZDsKKyAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsiRE9NLmNoaWxkTm9kZUluc2Vy
dGVkIl0gPSBvbkNoaWxkTm9kZUluc2VydGVkOworCisgICAgZnVuY3Rpb24gY3JlYXRlTm9kZUF0
dHJpYnV0ZXNNYXAoYXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVzTWFw
ID0ge307CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkg
Kz0gMikKKyAgICAgICAgICAgIGF0dHJpYnV0ZXNNYXBbYXR0cmlidXRlc1tpXV0gPSBhdHRyaWJ1
dGVzW2kgKyAxXTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNNYXA7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY29sbGVjdE5vZGUobm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLm5vZGVU
eXBlID09PSAxKQorICAgICAgICAgICAgbm9kZS5hdHRyaWJ1dGVzID0gY3JlYXRlTm9kZUF0dHJp
YnV0ZXNNYXAobm9kZS5hdHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pCisg
ICAgICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goY29sbGVjdE5vZGUpOworICAgICAgICBu
b2Rlc0J5SWRbbm9kZS5ub2RlSWRdID0gbm9kZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBub2Rl
VG9TdHJpbmcobm9kZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkgewor
ICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1cm4gbm9kZS5sb2NhbE5hbWUgKyAiIyIg
KyBub2RlLmF0dHJpYnV0ZXMuaWQ7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHJldHVy
biAiPHRleHQgbm9kZSAiICsgSlNPTi5zdHJpbmdpZnkobm9kZS5ub2RlVmFsdWUpICsgIj4iOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICI8bm9kZVR5cGUgIiArIG5vZGUu
bm9kZVR5cGUgKyAiPiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXROb2Rl
SWRlbnRpZmllcihub2RlSWQpCisgICAgeworICAgICAgICBpZiAoIW5vZGVJZCkKKyAgICAgICAg
ICAgIHJldHVybiAiPGludmFsaWQgbm9kZSBpZD4iOworICAgICAgICB2YXIgbm9kZSA9IG5vZGVz
QnlJZFtub2RlSWRdOworICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGVUb1N0cmluZyhub2RlKSA6
ICI8dW5rbm93biBub2RlPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25TZXRDaGlsZE5vZGVz
KHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgcmVzcG9uc2UucGFyYW1zLm5vZGVzLmZvckVhY2go
Y29sbGVjdE5vZGUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uQ2hpbGROb2RlUmVtb3ZlZChy
ZXNwb25zZSkKKyAgICB7CisgICAgICAgIHZhciBub2RlSWQgPSByZXNwb25zZS5wYXJhbXMubm9k
ZUlkOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVtb3Zpbmcgbm9kZSAiICsgZ2V0Tm9k
ZUlkZW50aWZpZXIobm9kZUlkKSk7CisgICAgICAgIGRlbGV0ZSBub2Rlc0J5SWRbbm9kZUlkXTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBvbkNoaWxkTm9kZUluc2VydGVkKHJlc3BvbnNlKQorICAg
IHsKKyAgICAgICAgY29sbGVjdE5vZGUocmVzcG9uc2UucGFyYW1zLm5vZGUpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiSW5zZXJ0aW5nIG5vZGUgIiArIGdldE5vZGVJZGVudGlmaWVyKHJl
c3BvbnNlLnBhcmFtcy5ub2RlLm5vZGVJZCkgKyAiIGludG8gIiArIGdldE5vZGVJZGVudGlmaWVy
KHJlc3BvbnNlLnBhcmFtcy5wYXJlbnROb2RlSWQpKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JU
ZXN0LnNlbmRDb21tYW5kKCJET00uZ2V0RG9jdW1lbnQiLCB7fSwgb25Hb3REb2N1bWVudCk7CisK
KyAgICBmdW5jdGlvbiBvbkdvdERvY3VtZW50KG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuY2hlY2tGb3JFcnJvcihtc2cpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21t
YW5kKCJET00ucXVlcnlTZWxlY3RvckFsbCIsIHsibm9kZUlkIjogbXNnLnJlc3VsdC5yb290Lm5v
ZGVJZCwgInNlbGVjdG9yIjogIiNwYXJlbnRfY29udGFpbmVyLCNmaW5hbF9jb250YWluZXIifSwg
b25RdWVyeVNlbGVjdG9yQWxsKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvblF1ZXJ5U2VsZWN0
b3JBbGwocmVzcG9uc2UpCisgICAgeworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgcmVjZWl2ZSB0
aGUgY2hpbGRyZW4gb2YgdGhlICIjZmluYWxfY29udGFpbmVyIiBhcyB0aGV5IGFyZSBhZGRlZC4K
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNwb25zZS5yZXN1bHQubm9kZUlkcy5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5yZXF1
ZXN0Q2hpbGROb2RlcyIsIHtub2RlSWQ6IHJlc3BvbnNlLnJlc3VsdC5ub2RlSWRzW2ldfSk7Cisg
ICAgICAgIAorICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJSdW50aW1lLmV2YWx1
YXRlIiwgeyJleHByZXNzaW9uIjogIm1vdmVOb2RlKCkifSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKworPHA+VGVz
dGluZyB0aGF0IERPTS5jaGlsZE5vZGVSZW1vdmVkIGlzIGNvcnJlY3RseSB0cmlnZ2VyZWQgd2hl
biBhbGwgdGhlIHBhcmVudCBjaGlsZHJlbiBvZiBhIG5vZGUgYXJlIHJlbW92ZWQgYXQgb25jZS48
L3A+CisKKzxkaXYgaWQ9InBhcmVudF9jb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImJlZm9yZSI+
RkFJTDogRWxlbWVudCAiI2JlZm9yZSIgc2hvdWxkIGJlIHJlbW92ZWQ8L2Rpdj4KKyAgICA8ZGl2
IGlkPSJ0YXJnZXRfZWxlbWVudCI+VGFyZ2V0IGVsZW1lbnQ8L2Rpdj4KKyAgICA8ZGl2IGlkPSJh
ZnRlciI+RkFJTDogRWxlbWVudCAiI2FmdGVyIiBzaG91bGQgYmUgcmVtb3ZlZDwvZGl2PgorPC9k
aXY+CisKKzxwIGlkPSJmaW5hbF9jb250YWluZXIiPlRhcmdldCBlbGVtZW50IHNob3VsZCBoYXZl
IGJlZW4gbW92ZWQgYWZ0ZXIgdGhpcyBsaW5lOjwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGVmMGYxYzYuLjFhZjZjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAor
MjAxMy0xMS0wNCAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogTW92aW5nIGFuIGVsZW1lbnQgd2hpbGUgaW4gdGhlIERPTU5v
ZGVSZW1vdmVkIGhhbmRsZXIgd2lsbCBoaWRlIGl0IGluIHRoZSBpbnNwZWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUgd2FzIGFjdHVhbGx5IGNhbGxpbmcgYm90aCB3aWxs
UmVtb3ZlRE9NTm9kZUltcGwgYW5kCisgICAgICAgIGRpZFJlbW92ZURPTU5vZGVJbXBsLCBtYWtp
bmcgdGhlIERPTUFnZW50IHVuYmluZCB0aGUgZWxlbWVudCBldmVuIGlmIGl0IHdhcyBzdGlsbCBw
YXJ0IG9mIHRoZSBET00uCisKKyAgICAgICAgQmVjYXVzZSBvZiB0aGF0IHRoZSBET01BZ2VudCB3
YXMgc2VuZGluZyB0d28gZXZlbnRzOgorICAgICAgICAxLiBXaGVuIHRoZSBlbGVtZW50IHdhcyBh
Ym91dCB0byBiZSByZW1vdmVkLCBqdXN0IGJlZm9yZSBKUyAiRE9NTm9kZVJlbW92ZWQiIHdhcyB0
cmlnZ2VyZWQuCisgICAgICAgIDIuIFdoZW4gdGhlIGVsZW1lbnQgd2FzIGFjdHVhbGx5IHJlbW92
ZWQuCisKKyAgICAgICAgTm90ZSB0aGF0IGluc3BlY3RvcidzIGV2ZW50ICMyIHdpbGwgbm90IGtu
b3cgYWJvdXQgdGhlIG5vZGUsIGFzIGl0IGp1c3QgcmVtb3ZlZCBpdCBmcm9tIHRoZQorICAgICAg
ICBpbnRlcm5hbCBoYXNobWFwLCBzbyBpdCB3aWxsIGp1c3QgdXNlIGEgbm9kZUlEID09IDAgZm9y
IGl0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHNlcGFyYXRlIGNhbGwgdG8gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlLCBqdXN0IGJlZm9yZSB0aGUKKyAg
ICAgICAgZWxlbWVudCBpcyBhYm91dCB0byBiZSByZW1vdmVkLiBUaGUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZSBjYWxsIGlzIG5vdyBvbmx5IHVzZWQKKyAgICAg
ICAgYnkgdGhlIERPTURlYnVnZ2VyIHRvIHRyaWdnZXIgdGhlIERPTSBicmVha3BvaW50cyBpbiB0
aGUgV2ViIEluc3BlY3Rvci4gVGhhdCBmZWF0dXJlIGlzIG5vdCBleHBvc2VkCisgICAgICAgIGlu
IHRoZSBuZXcgSW5zcGVjdG9yIFVJLCBidXQgY2FuIGJlIHVzZWQvdGVzdGVkIHVzaW5nIHRoZSBw
cm90b2NvbCBkaXJlY3RseS4KKworICAgICAgICBUZXN0czogaW5zcGVjdG9yLXByb3RvY29sL2Rv
bS1kZWJ1Z2dlci9ub2RlLXJlbW92ZWQuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yLXBy
b3RvY29sL2RvbS9kb20tcmVtb3ZlLWV2ZW50cy5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0
b3ItcHJvdG9jb2wvZG9tL3JlbW92ZS1tdWx0aXBsZS1ub2Rlcy5odG1sCisKKyAgICAgICAgKiBk
b20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpy
ZW1vdmVCZXR3ZWVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisKIDIwMTMtMTEtMDUgIFJlbmF0YSBIb2RvdmFuICA8cmVu
aUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGlzSFRNTFRpdGxlRWxl
bWVudChtX3RpdGxlRWxlbWVudC5nZXQoKSkgaW4gV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFRpdGxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZjUwZTViZC4uMWFkMDA5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNTg1LDYgKzU4NSw4IEBAIGJv
b2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogCiB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4oTm9kZSogcHJldmlv
dXNDaGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlJiBvbGRDaGlsZCkKIHsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGUoJm9sZENoaWxkLmRvY3VtZW50KCks
ICZvbGRDaGlsZCk7CisKICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVu
dERpc3BhdGNoOwogCiAgICAgQVNTRVJUKG9sZENoaWxkLnBhcmVudE5vZGUoKSA9PSB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAppbmRleCAwYzUxZjk1Li41OGQ1ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMTksNiArMTE5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKERvY3VtZW50KiwgTm9k
ZSogcGFyZW50KTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlKERvY3VtZW50Kiwg
Tm9kZSopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50KiwgTm9k
ZSopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKik7
CiAgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQqLCBFbGVtZW50Kiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihEb2N1bWVudCosIEVsZW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTUF0dHIoRG9jdW1lbnQqLCBFbGVtZW50KiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKQEAgLTU2NSwxMCArNTY2LDIwIEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoRG9jdW1lbnQqIGRv
Y3VtZW50LCBOb2RlCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVu
dCkpIHsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIHdpbGxS
ZW1vdmVET01Ob2RlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBub2RlKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKKyAgICBVTlVTRURfUEFSQU0obm9kZSk7CisjZW5kaWYK
K30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01O
b2RlKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKICAgICAgICAgZGlkUmVtb3ZlRE9NTm9kZUltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgbm9kZSk7Ci0gICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShub2RlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>