<?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>132721</bug_id>
          
          <creation_ts>2014-05-08 18:00:41 -0700</creation_ts>
          <short_desc>JSDOMWindow should have a WatchpointSet to fire on window close</short_desc>
          <delta_ts>2014-05-09 13:26:48 -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>
          
          <blocked>132705</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1007844</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-08 18:00:41 -0700</bug_when>
    <thetext>This would allow us to reset the inline caches that assumed that they could skip the first part of JSDOMWindow::getOwnPropertySlot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007852</commentid>
    <comment_count>1</comment_count>
      <attachid>231119</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-08 18:24:15 -0700</bug_when>
    <thetext>Created attachment 231119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007859</commentid>
    <comment_count>2</comment_count>
      <attachid>231119</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-08 19:06:23 -0700</bug_when>
    <thetext>Comment on attachment 231119
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:280
&gt; +            return;

continue;

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:283
&gt; +            return;

continue;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007861</commentid>
    <comment_count>3</comment_count>
      <attachid>231121</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-08 19:09:12 -0700</bug_when>
    <thetext>Created attachment 231121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007911</commentid>
    <comment_count>4</comment_count>
      <attachid>231121</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-09 00:03:24 -0700</bug_when>
    <thetext>Comment on attachment 231121
Patch

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

r=me

&gt; Source/JavaScriptCore/jit/Repatch.cpp:334
&gt; +    if (watchpointSet)
&gt; +        watchpointSet-&gt;add(stubInfo.addWatchpoint(codeBlock));
&gt; +

Is this really the only place we&apos;ll ever specialize a window object property access? Is there some kind of struct flag to guarantee that? For example, what prevents the DFG from fully inlining the property access?

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:275
&gt; +    clientData-&gt;getAllWorlds(wrapperWorlds);

If DOMWindow were ScriptWrappable, you would need a special case to clear its inline wrapper. But it isn&apos;t. So yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008041</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-09 11:22:45 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 231121 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=231121&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/Repatch.cpp:334
&gt; &gt; +    if (watchpointSet)
&gt; &gt; +        watchpointSet-&gt;add(stubInfo.addWatchpoint(codeBlock));
&gt; &gt; +
&gt; 
&gt; Is this really the only place we&apos;ll ever specialize a window object property access? Is there some kind of struct flag to guarantee that? For example, what prevents the DFG from fully inlining the property access?

Now that you mention it, the DFG definitely needs to know about this. This will require more infrastructure, so I&apos;ll post a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008051</commentid>
    <comment_count>6</comment_count>
      <attachid>231172</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-09 11:49:35 -0700</bug_when>
    <thetext>Created attachment 231172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008066</commentid>
    <comment_count>7</comment_count>
      <attachid>231177</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-09 12:19:08 -0700</bug_when>
    <thetext>Created attachment 231177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008073</commentid>
    <comment_count>8</comment_count>
      <attachid>231177</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-09 12:52:57 -0700</bug_when>
    <thetext>Comment on attachment 231177
Patch

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

&gt; Source/JavaScriptCore/bytecode/PolymorphicGetByIdList.h:84
&gt;      bool doesCalls() const { return type() == Getter || type() == CustomGetter; }
&gt; +    bool isWatched() const { return type() == WatchedStub; }

Add an isSimple() and assert that instead of the places where we currently assert !doesCalls().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008082</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-09 13:26:48 -0700</bug_when>
    <thetext>Committed r168548: &lt;http://trac.webkit.org/changeset/168548&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231119</attachid>
            <date>2014-05-08 18:24:15 -0700</date>
            <delta_ts>2014-05-08 19:09:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132721-20140508182301.patch</filename>
            <type>text/plain</type>
            <size>11370</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA1LTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNET01XaW5kb3cgc2hvdWxkIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRvIGZpcmUg
b24gd2luZG93IGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzI3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyB1cyB0byByZXNldCB0aGUgaW5saW5lIGNhY2hlcyB0
aGF0IGFzc3VtZWQgdGhleSBjb3VsZCBza2lwIAorICAgICAgICB0aGUgZmlyc3QgcGFydCBvZiBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90IHRoYXQgY2hlY2tzIGlmIHRoZSB3aW5kb3cg
aGFzIAorICAgICAgICBiZWVuIGNsb3NlZC4gVGhpcyBpcyBwYXJ0IG9mIGdldHRpbmcgcmlkIG9m
IEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCBvbiBKU0RPTVdpbmRvdy4KKworICAgICAgICBQ
cm9wZXJ0eVNsb3Qgbm93IGFjY2VwdHMgYSBXYXRjaHBvaW50U2V0IHdoaWNoIHRoZSBpbmxpbmUg
Y2FjaGUgY29kZSBjYW4gbG9vayBmb3IKKyAgICAgICAgdG8gc2VlIGlmIGl0IHNob3VsZCBjcmVh
dGUgYSBuZXcgV2F0Y2hwb2ludCBmb3IgdGhhdCBwYXJ0aWN1bGFyIGlubGluZSBjYWNoZSBzaXRl
LgorCisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6
OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgor
ICAgICAgICAoSlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6d2F0Y2hwb2ludFNldCk6CisgICAgICAgIChK
U0M6OlByb3BlcnR5U2xvdDo6c2V0V2F0Y2hwb2ludFNldCk6CisKIDIwMTQtMDUtMDggIE1hcmsg
SGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBCYXNlIGNhc2Ug
Zm9yIGdldC1ieS1pZCBpbmxpbmUgY2FjaGUgZG9lc24ndCBjaGVjayBmb3IgSGFzSW1wdXJlR2V0
T3duUHJvcGVydHlTbG90CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9X
YXRjaHBvaW50LmgJKHJldmlzaW9uIDE2ODUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9XYXRjaHBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDggKzU3LDggQEAgY2xh
c3MgSW5saW5lV2F0Y2hwb2ludFNldDsKIGNsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4gewogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6Ci0gICAgV2F0Y2hwb2ludFNldChXYXRjaHBvaW50
U3RhdGUpOwotICAgIH5XYXRjaHBvaW50U2V0KCk7IC8vIE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90
IGZpcmUgYW55IG9mIHRoZSB3YXRjaHBvaW50czsgaWYgeW91IG5lZWQgdG8ga25vdyB3aGVuIGEg
V2F0Y2hwb2ludFNldCBkaWVzIHRoZW4geW91IG5lZWQgYSBzZXBhcmF0ZSBtZWNoYW5pc20gZm9y
IHRoaXMuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2F0Y2hwb2ludFNldChXYXRjaHBvaW50U3Rh
dGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5XYXRjaHBvaW50U2V0KCk7IC8vIE5vdGUgdGhh
dCB0aGlzIHdpbGwgbm90IGZpcmUgYW55IG9mIHRoZSB3YXRjaHBvaW50czsgaWYgeW91IG5lZWQg
dG8ga25vdyB3aGVuIGEgV2F0Y2hwb2ludFNldCBkaWVzIHRoZW4geW91IG5lZWQgYSBzZXBhcmF0
ZSBtZWNoYW5pc20gZm9yIHRoaXMuCiAgICAgCiAgICAgLy8gSXQgaXMgc2FmZSB0byBjYWxsIHRo
aXMgZnJvbSBhbm90aGVyIHRocmVhZC4gSXQgbWF5IHJldHVybiBhbiBvbGQKICAgICAvLyBzdGF0
ZS4gR3VhcmFudGVlcyB0aGF0IGlmICpmaXJzdCogcmVhZCB0aGUgc3RhdGUoKSBvZiB0aGUgdGhp
bmcgYmVpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNp
b24gMTY4NTExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg1LDggKzI4NSw4IEBAIHN0YXRpYyBGdW5jdGlvblB0ciBjdXN0b21G
b3IoY29uc3QgUHV0UHIKIHN0YXRpYyB2b2lkIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgRXhlY1N0
YXRlKiBleGVjLCBCeUlkU3R1YktpbmQga2luZCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLAogICAgIEZ1bmN0aW9uUHRyIGN1c3RvbSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwKLSAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJnZXRGcm9tUHJveHks
IENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwKLSAgICBDb2RlTG9jYXRpb25MYWJlbCBz
bG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJn
ZXRGcm9tUHJveHksIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsCisgICAgQ29kZUxvY2F0
aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBS
ZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUik7CkBAIC0zMjksNiArMzI5LDkgQEAgc3RhdGljIHZvaWQgZ2VuZXJh
dGVCeUlkU3R1YigKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm5ld0ltcHVyZVByb3Bl
cnR5RmlyZXNXYXRjaHBvaW50cygpKQogICAgICAgICB2bS0+cmVnaXN0ZXJXYXRjaHBvaW50Rm9y
SW1wdXJlUHJvcGVydHkocHJvcGVydHlOYW1lLCBzdHViSW5mby5hZGRXYXRjaHBvaW50KGNvZGVC
bG9jaykpOwogCisgICAgaWYgKHdhdGNocG9pbnRTZXQpCisgICAgICAgIHdhdGNocG9pbnRTZXQt
PmFkZChzdHViSW5mby5hZGRXYXRjaHBvaW50KGNvZGVCbG9jaykpOworCiAgICAgU3RydWN0dXJl
KiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9
IDA7CiAgICAgaWYgKGNoYWluKSB7CkBAIC03ODMsNyArNzg2LDggQEAgc3RhdGljIGJvb2wgdHJ5
QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1
YlJvdXRpbmU7CiAgICAgZ2VuZXJhdGVCeUlkU3R1YigKICAgICAgICAgZXhlYywga2luZEZvcihz
bG90KSwgaWRlbnQsIGN1c3RvbUZvcihzbG90KSwgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBj
b3VudCwgb2Zmc2V0LCAKLSAgICAgICAgc3RydWN0dXJlLCBsb2FkVGFyZ2V0RnJvbVByb3h5LCBz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5k
ZWx0YUNhbGxUb0RvbmUpLAorICAgICAgICBzdHJ1Y3R1cmUsIGxvYWRUYXJnZXRGcm9tUHJveHks
IHNsb3Qud2F0Y2hwb2ludFNldCgpLCAKKyAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSwKICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwobGlzdC0+Y3VycmVudFNsb3dQYXRoVGFyZ2V0KHN0dWJJbmZv
KSksIHN0dWJSb3V0aW5lKTsKICAgICAKICAgICBHZXRCeUlkQWNjZXNzOjpBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGU7CkBAIC0xMjAxLDcgKzEyMDUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5
SUQoRXhlY1N0YXRlKiBlCiAKICAgICAgICAgZ2VuZXJhdGVCeUlkU3R1YigKICAgICAgICAgICAg
IGV4ZWMsIGtpbmRGb3Ioc2xvdCksIGlkZW50LCBjdXN0b21Gb3Ioc2xvdCksIHN0dWJJbmZvLCBw
cm90b3R5cGVDaGFpbiwgY291bnQsCi0gICAgICAgICAgICBvZmZzZXQsIHN0cnVjdHVyZSwgZmFs
c2UsCisgICAgICAgICAgICBvZmZzZXQsIHN0cnVjdHVyZSwgZmFsc2UsIG51bGxwdHIsCiAgICAg
ICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpLAogICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2Fz
ZSksCiAgICAgICAgICAgICBzdHViUm91dGluZSk7CkBAIC0xMzMzLDcgKzEzMzcsNyBAQCBzdGF0
aWMgYm9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0CiAKICAgICAgICAgZ2VuZXJhdGVC
eUlkU3R1YigKICAgICAgICAgICAgIGV4ZWMsIGtpbmRGb3Ioc2xvdCksIHByb3BlcnR5TmFtZSwg
Y3VzdG9tRm9yKHNsb3QpLCBzdHViSW5mbywgcHJvdG90eXBlQ2hhaW4sIGNvdW50LAotICAgICAg
ICAgICAgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGZhbHNlLAorICAgICAgICAgICAgb2Zmc2V0LCBzdHJ1
Y3R1cmUsIGZhbHNlLCBudWxscHRyLAogICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSwKICAg
ICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgp
KSwKICAgICAgICAgICAgIHN0dWJSb3V0aW5lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxNjg1MTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9wcm9wZXJ0eVR5cGUoVHlwZVVuc2V0
KQogICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgICAgICwgbV90aGlzVmFs
dWUodGhpc1ZhbHVlKQorICAgICAgICAsIG1fd2F0Y2hwb2ludFNldChudWxscHRyKQogICAgIHsK
ICAgICB9CiAKQEAgLTEwNCw2ICsxMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9z
bG90QmFzZTsKICAgICB9CiAKKyAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3dhdGNocG9pbnRTZXQ7CisgICAgfQorCiAgICAg
dm9pZCBzZXRWYWx1ZShKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
VmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQodmFsdWUpOwpAQCAtMjEwLDYgKzIx
NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICB9
CiAKKyAgICB2b2lkIHNldFdhdGNocG9pbnRTZXQoV2F0Y2hwb2ludFNldCYgc2V0KQorICAgIHsK
KyAgICAgICAgbV93YXRjaHBvaW50U2V0ID0gJnNldDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25z
dDsKIApAQCAtMjMyLDYgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlPZmZzZXQgbV9v
ZmZzZXQ7CiAgICAgY29uc3QgSlNWYWx1ZSBtX3RoaXNWYWx1ZTsKICAgICBKU09iamVjdCogbV9z
bG90QmFzZTsKKyAgICBXYXRjaHBvaW50U2V0KiBtX3dhdGNocG9pbnRTZXQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODUxMykKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE0
LTA1LTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNET01XaW5kb3cgc2hvdWxkIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRvIGZpcmUgb24gd2lu
ZG93IGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzI3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgdXMgdG8gcmVzZXQg
dGhlIGlubGluZSBjYWNoZXMgdGhhdCBhc3N1bWVkIHRoZXkgY291bGQgc2tpcCAKKyAgICAgICAg
dGhlIGZpcnN0IHBhcnQgb2YgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCB0aGF0IGNo
ZWNrcyBpZiB0aGUgd2luZG93IGhhcyAKKyAgICAgICAgYmVlbiBjbG9zZWQuIFRoaXMgaXMgcGFy
dCBvZiBnZXR0aW5nIHJpZCBvZiBIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3Qgb24gSlNET01X
aW5kb3cuCisKKyAgICAgICAgSlNET01XaW5kb3dCYXNlIG5vdyBoYXMgYSBXYXRjaHBvaW50U2V0
IHRoYXQgdGhlIHVuZGVybHlpbmcgRE9NV2luZG93IGZpcmVzIHdoZW4gaXRzCisgICAgICAgIGZy
YW1lIGlzIGNsZWFyZWQuIEluIGdldE93blByb3BlcnR5U2xvdCwgd2Ugbm93IHBhc3MgdGhpcyBX
YXRjaHBvaW50U2V0IHRvIFByb3BlcnR5U2xvdAorICAgICAgICB3aGljaCB3aWxsIHNoZXBoZXJk
IGl0IGJhY2sgdXAgdG8gdGhlIGNvZGUgdGhhdCBnZW5lcmF0ZXMgdGhlIGlubGluZSBjYWNoZSAo
YW5kIHRoZSAKKyAgICAgICAgV2F0Y2hwb2ludCBmb3IgY2xlYXJpbmcgaXQpLgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93QmFzZTo6ZmlyZUZyYW1lQ2xlYXJlZFdhdGNocG9pbnRzRm9yV2luZG93KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZyYW1lRGVzdHJveWVkKToKKwogMjAxNC0wNS0wOCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdL
Ml0gQm90dG9tLXJlbGF0aXZlIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRzIGFyZSBtaXNwbGFjZWQg
b24gcGFnZSBsb2FkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDE2ODUxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcg
QEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kbwogCiBKU0RPTVdpbmRv
d0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNz
UmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6
IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQoKSwgJnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUpCisgICAgLCBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMoSXNX
YXRjaGVkKQogICAgICwgbV9pbXBsKHdpbmRvdykKICAgICAsIG1fc2hlbGwoc2hlbGwpCiB7CkBA
IC0yNjYsNCArMjY3LDIzIEBAIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEpTVmFsdWUgdmFs
dWUKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpcmVGcmFtZUNs
ZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICBKU0M6
OlZNJiB2bSA9IEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKTsKKyAgICBXZWJDb3JlSlNDbGll
bnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOworICAgIFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4gd3JhcHBlcldv
cmxkczsKKyAgICBjbGllbnREYXRhLT5nZXRBbGxXb3JsZHMod3JhcHBlcldvcmxkcyk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdyYXBwZXJXb3JsZHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgRE9NT2JqZWN0V3JhcHBlck1hcCYgd3JhcHBlcnMgPSB3cmFwcGVyV29ybGRzW2ldLT5t
X3dyYXBwZXJzOworICAgICAgICBhdXRvIHJlc3VsdCA9IHdyYXBwZXJzLmZpbmQod2luZG93KTsK
KyAgICAgICAgaWYgKHJlc3VsdCA9PSB3cmFwcGVycy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgSlNDOjpKU09iamVjdCogd3JhcHBlciA9IHJlc3VsdC0+dmFsdWUuZ2V0KCk7
CisgICAgICAgIGlmICghd3JhcHBlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgSlNE
T01XaW5kb3dCYXNlKiBqc1dpbmRvdyA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHdy
YXBwZXIpOworICAgICAgICBqc1dpbmRvdy0+bV93aW5kb3dDbG9zZVdhdGNocG9pbnRzLmZpcmVB
bGwoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCShyZXZpc2lvbiAxNjg1MTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNiArNzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBK
U0RPTVdpbmRvd1NoZWxsKiBzaGVsbCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU0M6OlZN
JiBjb21tb25WTSgpOworICAgICAgICBzdGF0aWMgdm9pZCBmaXJlRnJhbWVDbGVhcmVkV2F0Y2hw
b2ludHNGb3JXaW5kb3coRE9NV2luZG93Kik7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEpT
Qzo6V2F0Y2hwb2ludFNldCBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHM7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2ltcGw7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAxNjg1
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsOCBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPCiAgICAgICAgIC8vIG5vdCBhbGxvd2VkLiAKICAgICAgICAgc2xv
dC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIH0gZWxz
ZQorICAgICAgICBzbG90LnNldFdhdGNocG9pbnRTZXQodGhpc09iamVjdC0+bV93aW5kb3dDbG9z
ZVdhdGNocG9pbnRzKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGNyb3NzLWRvbWFp
biBhY2Nlc3MgaGVyZSB3aXRob3V0IHByaW50aW5nIHRoZSBnZW5lcmljIHdhcm5pbmcgbWVzc2Fn
ZQogICAgIC8vIGJlY2F1c2Ugd2UgYWx3YXlzIGFsbG93IGFjY2VzcyB0byBzb21lIGZ1bmN0aW9u
LCBqdXN0IGRpZmZlcmVudCBvbmVzIGRlcGVuZGluZyB3aGV0aGVyIGFjY2VzcwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTY4NTExKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTcsNiArNDU3LDcgQEAg
dm9pZCBET01XaW5kb3c6OmZyYW1lRGVzdHJveWVkKCkKICAgICB3aWxsRGVzdHJveURvY3VtZW50
SW5GcmFtZSgpOwogICAgIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWVEZXN0cm95ZWQo
KTsKICAgICByZXNldERPTVdpbmRvd1Byb3BlcnRpZXMoKTsKKyAgICBKU0RPTVdpbmRvd0Jhc2U6
OmZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyh0aGlzKTsKIH0KIAogdm9pZCBE
T01XaW5kb3c6OndpbGxEZXRhY2hQYWdlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231121</attachid>
            <date>2014-05-08 19:09:12 -0700</date>
            <delta_ts>2014-05-09 11:49:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132721-20140508190756.patch</filename>
            <type>text/plain</type>
            <size>11374</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA1LTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNET01XaW5kb3cgc2hvdWxkIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRvIGZpcmUg
b24gd2luZG93IGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzI3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyB1cyB0byByZXNldCB0aGUgaW5saW5lIGNhY2hlcyB0
aGF0IGFzc3VtZWQgdGhleSBjb3VsZCBza2lwIAorICAgICAgICB0aGUgZmlyc3QgcGFydCBvZiBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90IHRoYXQgY2hlY2tzIGlmIHRoZSB3aW5kb3cg
aGFzIAorICAgICAgICBiZWVuIGNsb3NlZC4gVGhpcyBpcyBwYXJ0IG9mIGdldHRpbmcgcmlkIG9m
IEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCBvbiBKU0RPTVdpbmRvdy4KKworICAgICAgICBQ
cm9wZXJ0eVNsb3Qgbm93IGFjY2VwdHMgYSBXYXRjaHBvaW50U2V0IHdoaWNoIHRoZSBpbmxpbmUg
Y2FjaGUgY29kZSBjYW4gbG9vayBmb3IKKyAgICAgICAgdG8gc2VlIGlmIGl0IHNob3VsZCBjcmVh
dGUgYSBuZXcgV2F0Y2hwb2ludCBmb3IgdGhhdCBwYXJ0aWN1bGFyIGlubGluZSBjYWNoZSBzaXRl
LgorCisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6
OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgor
ICAgICAgICAoSlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6d2F0Y2hwb2ludFNldCk6CisgICAgICAgIChK
U0M6OlByb3BlcnR5U2xvdDo6c2V0V2F0Y2hwb2ludFNldCk6CisKIDIwMTQtMDUtMDggIE1hcmsg
SGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBCYXNlIGNhc2Ug
Zm9yIGdldC1ieS1pZCBpbmxpbmUgY2FjaGUgZG9lc24ndCBjaGVjayBmb3IgSGFzSW1wdXJlR2V0
T3duUHJvcGVydHlTbG90CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9X
YXRjaHBvaW50LmgJKHJldmlzaW9uIDE2ODUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9XYXRjaHBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDggKzU3LDggQEAgY2xh
c3MgSW5saW5lV2F0Y2hwb2ludFNldDsKIGNsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4gewogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6Ci0gICAgV2F0Y2hwb2ludFNldChXYXRjaHBvaW50
U3RhdGUpOwotICAgIH5XYXRjaHBvaW50U2V0KCk7IC8vIE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90
IGZpcmUgYW55IG9mIHRoZSB3YXRjaHBvaW50czsgaWYgeW91IG5lZWQgdG8ga25vdyB3aGVuIGEg
V2F0Y2hwb2ludFNldCBkaWVzIHRoZW4geW91IG5lZWQgYSBzZXBhcmF0ZSBtZWNoYW5pc20gZm9y
IHRoaXMuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2F0Y2hwb2ludFNldChXYXRjaHBvaW50U3Rh
dGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5XYXRjaHBvaW50U2V0KCk7IC8vIE5vdGUgdGhh
dCB0aGlzIHdpbGwgbm90IGZpcmUgYW55IG9mIHRoZSB3YXRjaHBvaW50czsgaWYgeW91IG5lZWQg
dG8ga25vdyB3aGVuIGEgV2F0Y2hwb2ludFNldCBkaWVzIHRoZW4geW91IG5lZWQgYSBzZXBhcmF0
ZSBtZWNoYW5pc20gZm9yIHRoaXMuCiAgICAgCiAgICAgLy8gSXQgaXMgc2FmZSB0byBjYWxsIHRo
aXMgZnJvbSBhbm90aGVyIHRocmVhZC4gSXQgbWF5IHJldHVybiBhbiBvbGQKICAgICAvLyBzdGF0
ZS4gR3VhcmFudGVlcyB0aGF0IGlmICpmaXJzdCogcmVhZCB0aGUgc3RhdGUoKSBvZiB0aGUgdGhp
bmcgYmVpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNp
b24gMTY4NTExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg1LDggKzI4NSw4IEBAIHN0YXRpYyBGdW5jdGlvblB0ciBjdXN0b21G
b3IoY29uc3QgUHV0UHIKIHN0YXRpYyB2b2lkIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgRXhlY1N0
YXRlKiBleGVjLCBCeUlkU3R1YktpbmQga2luZCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLAogICAgIEZ1bmN0aW9uUHRyIGN1c3RvbSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwKLSAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJnZXRGcm9tUHJveHks
IENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwKLSAgICBDb2RlTG9jYXRpb25MYWJlbCBz
bG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJn
ZXRGcm9tUHJveHksIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsCisgICAgQ29kZUxvY2F0
aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBS
ZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUik7CkBAIC0zMjksNiArMzI5LDkgQEAgc3RhdGljIHZvaWQgZ2VuZXJh
dGVCeUlkU3R1YigKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm5ld0ltcHVyZVByb3Bl
cnR5RmlyZXNXYXRjaHBvaW50cygpKQogICAgICAgICB2bS0+cmVnaXN0ZXJXYXRjaHBvaW50Rm9y
SW1wdXJlUHJvcGVydHkocHJvcGVydHlOYW1lLCBzdHViSW5mby5hZGRXYXRjaHBvaW50KGNvZGVC
bG9jaykpOwogCisgICAgaWYgKHdhdGNocG9pbnRTZXQpCisgICAgICAgIHdhdGNocG9pbnRTZXQt
PmFkZChzdHViSW5mby5hZGRXYXRjaHBvaW50KGNvZGVCbG9jaykpOworCiAgICAgU3RydWN0dXJl
KiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9
IDA7CiAgICAgaWYgKGNoYWluKSB7CkBAIC03ODMsNyArNzg2LDggQEAgc3RhdGljIGJvb2wgdHJ5
QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1
YlJvdXRpbmU7CiAgICAgZ2VuZXJhdGVCeUlkU3R1YigKICAgICAgICAgZXhlYywga2luZEZvcihz
bG90KSwgaWRlbnQsIGN1c3RvbUZvcihzbG90KSwgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBj
b3VudCwgb2Zmc2V0LCAKLSAgICAgICAgc3RydWN0dXJlLCBsb2FkVGFyZ2V0RnJvbVByb3h5LCBz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5k
ZWx0YUNhbGxUb0RvbmUpLAorICAgICAgICBzdHJ1Y3R1cmUsIGxvYWRUYXJnZXRGcm9tUHJveHks
IHNsb3Qud2F0Y2hwb2ludFNldCgpLCAKKyAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSwKICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwobGlzdC0+Y3VycmVudFNsb3dQYXRoVGFyZ2V0KHN0dWJJbmZv
KSksIHN0dWJSb3V0aW5lKTsKICAgICAKICAgICBHZXRCeUlkQWNjZXNzOjpBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGU7CkBAIC0xMjAxLDcgKzEyMDUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5
SUQoRXhlY1N0YXRlKiBlCiAKICAgICAgICAgZ2VuZXJhdGVCeUlkU3R1YigKICAgICAgICAgICAg
IGV4ZWMsIGtpbmRGb3Ioc2xvdCksIGlkZW50LCBjdXN0b21Gb3Ioc2xvdCksIHN0dWJJbmZvLCBw
cm90b3R5cGVDaGFpbiwgY291bnQsCi0gICAgICAgICAgICBvZmZzZXQsIHN0cnVjdHVyZSwgZmFs
c2UsCisgICAgICAgICAgICBvZmZzZXQsIHN0cnVjdHVyZSwgZmFsc2UsIG51bGxwdHIsCiAgICAg
ICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpLAogICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2Fz
ZSksCiAgICAgICAgICAgICBzdHViUm91dGluZSk7CkBAIC0xMzMzLDcgKzEzMzcsNyBAQCBzdGF0
aWMgYm9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0CiAKICAgICAgICAgZ2VuZXJhdGVC
eUlkU3R1YigKICAgICAgICAgICAgIGV4ZWMsIGtpbmRGb3Ioc2xvdCksIHByb3BlcnR5TmFtZSwg
Y3VzdG9tRm9yKHNsb3QpLCBzdHViSW5mbywgcHJvdG90eXBlQ2hhaW4sIGNvdW50LAotICAgICAg
ICAgICAgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGZhbHNlLAorICAgICAgICAgICAgb2Zmc2V0LCBzdHJ1
Y3R1cmUsIGZhbHNlLCBudWxscHRyLAogICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSwKICAg
ICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgp
KSwKICAgICAgICAgICAgIHN0dWJSb3V0aW5lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxNjg1MTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9wcm9wZXJ0eVR5cGUoVHlwZVVuc2V0
KQogICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgICAgICwgbV90aGlzVmFs
dWUodGhpc1ZhbHVlKQorICAgICAgICAsIG1fd2F0Y2hwb2ludFNldChudWxscHRyKQogICAgIHsK
ICAgICB9CiAKQEAgLTEwNCw2ICsxMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9z
bG90QmFzZTsKICAgICB9CiAKKyAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3dhdGNocG9pbnRTZXQ7CisgICAgfQorCiAgICAg
dm9pZCBzZXRWYWx1ZShKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
VmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQodmFsdWUpOwpAQCAtMjEwLDYgKzIx
NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICB9
CiAKKyAgICB2b2lkIHNldFdhdGNocG9pbnRTZXQoV2F0Y2hwb2ludFNldCYgc2V0KQorICAgIHsK
KyAgICAgICAgbV93YXRjaHBvaW50U2V0ID0gJnNldDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25z
dDsKIApAQCAtMjMyLDYgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlPZmZzZXQgbV9v
ZmZzZXQ7CiAgICAgY29uc3QgSlNWYWx1ZSBtX3RoaXNWYWx1ZTsKICAgICBKU09iamVjdCogbV9z
bG90QmFzZTsKKyAgICBXYXRjaHBvaW50U2V0KiBtX3dhdGNocG9pbnRTZXQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODUxMykKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE0
LTA1LTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNET01XaW5kb3cgc2hvdWxkIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRvIGZpcmUgb24gd2lu
ZG93IGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzI3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgdXMgdG8gcmVzZXQg
dGhlIGlubGluZSBjYWNoZXMgdGhhdCBhc3N1bWVkIHRoZXkgY291bGQgc2tpcCAKKyAgICAgICAg
dGhlIGZpcnN0IHBhcnQgb2YgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCB0aGF0IGNo
ZWNrcyBpZiB0aGUgd2luZG93IGhhcyAKKyAgICAgICAgYmVlbiBjbG9zZWQuIFRoaXMgaXMgcGFy
dCBvZiBnZXR0aW5nIHJpZCBvZiBIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3Qgb24gSlNET01X
aW5kb3cuCisKKyAgICAgICAgSlNET01XaW5kb3dCYXNlIG5vdyBoYXMgYSBXYXRjaHBvaW50U2V0
IHRoYXQgdGhlIHVuZGVybHlpbmcgRE9NV2luZG93IGZpcmVzIHdoZW4gaXRzCisgICAgICAgIGZy
YW1lIGlzIGNsZWFyZWQuIEluIGdldE93blByb3BlcnR5U2xvdCwgd2Ugbm93IHBhc3MgdGhpcyBX
YXRjaHBvaW50U2V0IHRvIFByb3BlcnR5U2xvdAorICAgICAgICB3aGljaCB3aWxsIHNoZXBoZXJk
IGl0IGJhY2sgdXAgdG8gdGhlIGNvZGUgdGhhdCBnZW5lcmF0ZXMgdGhlIGlubGluZSBjYWNoZSAo
YW5kIHRoZSAKKyAgICAgICAgV2F0Y2hwb2ludCBmb3IgY2xlYXJpbmcgaXQpLgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93QmFzZTo6ZmlyZUZyYW1lQ2xlYXJlZFdhdGNocG9pbnRzRm9yV2luZG93KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZyYW1lRGVzdHJveWVkKToKKwogMjAxNC0wNS0wOCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdL
Ml0gQm90dG9tLXJlbGF0aXZlIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRzIGFyZSBtaXNwbGFjZWQg
b24gcGFnZSBsb2FkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDE2ODUxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcg
QEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kbwogCiBKU0RPTVdpbmRv
d0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNz
UmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6
IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQoKSwgJnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUpCisgICAgLCBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMoSXNX
YXRjaGVkKQogICAgICwgbV9pbXBsKHdpbmRvdykKICAgICAsIG1fc2hlbGwoc2hlbGwpCiB7CkBA
IC0yNjYsNCArMjY3LDIzIEBAIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEpTVmFsdWUgdmFs
dWUKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpcmVGcmFtZUNs
ZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICBKU0M6
OlZNJiB2bSA9IEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKTsKKyAgICBXZWJDb3JlSlNDbGll
bnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOworICAgIFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4gd3JhcHBlcldv
cmxkczsKKyAgICBjbGllbnREYXRhLT5nZXRBbGxXb3JsZHMod3JhcHBlcldvcmxkcyk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdyYXBwZXJXb3JsZHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgRE9NT2JqZWN0V3JhcHBlck1hcCYgd3JhcHBlcnMgPSB3cmFwcGVyV29ybGRzW2ldLT5t
X3dyYXBwZXJzOworICAgICAgICBhdXRvIHJlc3VsdCA9IHdyYXBwZXJzLmZpbmQod2luZG93KTsK
KyAgICAgICAgaWYgKHJlc3VsdCA9PSB3cmFwcGVycy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyID0gcmVzdWx0LT52YWx1ZS5nZXQo
KTsKKyAgICAgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IEpTRE9NV2luZG93QmFzZSoganNXaW5kb3cgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2Uq
Pih3cmFwcGVyKTsKKyAgICAgICAganNXaW5kb3ctPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cy5m
aXJlQWxsKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkocmV2aXNpb24gMTY4
NTExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgSlNET01XaW5kb3dTaGVsbCogc2hlbGwoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlND
OjpWTSYgY29tbW9uVk0oKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZmlyZUZyYW1lQ2xlYXJlZFdh
dGNocG9pbnRzRm9yV2luZG93KERPTVdpbmRvdyopOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBKU0M6OldhdGNocG9pbnRTZXQgbV93aW5kb3dDbG9zZVdhdGNocG9pbnRzOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9pbXBsOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24g
MTY4NTExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDggQEAgYm9vbCBKU0RPTVdpbmRvdzo6
Z2V0T3duUHJvcGVydHlTbG90KEpTTwogICAgICAgICAvLyBub3QgYWxsb3dlZC4gCiAgICAgICAg
IHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICB9
IGVsc2UKKyAgICAgICAgc2xvdC5zZXRXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QtPm1fd2luZG93
Q2xvc2VXYXRjaHBvaW50cyk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBjcm9zcy1k
b21haW4gYWNjZXNzIGhlcmUgd2l0aG91dCBwcmludGluZyB0aGUgZ2VuZXJpYyB3YXJuaW5nIG1l
c3NhZ2UKICAgICAvLyBiZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3MgdG8gc29tZSBmdW5j
dGlvbiwganVzdCBkaWZmZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBhY2Nlc3MKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDE2ODUxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU3LDYgKzQ1Nyw3
IEBAIHZvaWQgRE9NV2luZG93OjpmcmFtZURlc3Ryb3llZCgpCiAgICAgd2lsbERlc3Ryb3lEb2N1
bWVudEluRnJhbWUoKTsKICAgICBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lRGVzdHJv
eWVkKCk7CiAgICAgcmVzZXRET01XaW5kb3dQcm9wZXJ0aWVzKCk7CisgICAgSlNET01XaW5kb3dC
YXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2ludHNGb3JXaW5kb3codGhpcyk7CiB9CiAKIHZv
aWQgRE9NV2luZG93Ojp3aWxsRGV0YWNoUGFnZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231172</attachid>
            <date>2014-05-09 11:49:35 -0700</date>
            <delta_ts>2014-05-09 12:19:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132721-20140509114748.patch</filename>
            <type>text/plain</type>
            <size>14119</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA1LTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNET01XaW5kb3cgc2hvdWxkIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRvIGZpcmUg
b24gd2luZG93IGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzI3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyB1cyB0byByZXNldCB0aGUgaW5saW5lIGNhY2hlcyB0
aGF0IGFzc3VtZWQgdGhleSBjb3VsZCBza2lwIAorICAgICAgICB0aGUgZmlyc3QgcGFydCBvZiBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90IHRoYXQgY2hlY2tzIGlmIHRoZSB3aW5kb3cg
aGFzIAorICAgICAgICBiZWVuIGNsb3NlZC4gVGhpcyBpcyBwYXJ0IG9mIGdldHRpbmcgcmlkIG9m
IEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCBvbiBKU0RPTVdpbmRvdy4KKworICAgICAgICBQ
cm9wZXJ0eVNsb3Qgbm93IGFjY2VwdHMgYSBXYXRjaHBvaW50U2V0IHdoaWNoIHRoZSBpbmxpbmUg
Y2FjaGUgY29kZSBjYW4gbG9vayBmb3IKKyAgICAgICAgdG8gc2VlIGlmIGl0IHNob3VsZCBjcmVh
dGUgYSBuZXcgV2F0Y2hwb2ludCBmb3IgdGhhdCBwYXJ0aWN1bGFyIGlubGluZSBjYWNoZSBzaXRl
LgorCisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6
OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgor
ICAgICAgICAoSlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6d2F0Y2hwb2ludFNldCk6CisgICAgICAgIChK
U0M6OlByb3BlcnR5U2xvdDo6c2V0V2F0Y2hwb2ludFNldCk6CisKIDIwMTQtMDUtMDkgIHBlYXZv
QG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0gQ3Jhc2gg
d2hlbiBlbmFibGluZyBERkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzgsMTAgKzE3OCwyMyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3JTCiAgICAgUG9seW1vcnBoaWNHZXRCeUlkTGlzdCogbGlzdCA9IDA7CiAgICAgaWYgKHN0
dWJJbmZvLT5hY2Nlc3NUeXBlID09IGFjY2Vzc19nZXRfYnlfaWRfbGlzdCkgewogICAgICAgICBs
aXN0ID0gc3R1YkluZm8tPnUuZ2V0QnlJZExpc3QubGlzdDsKKyAgICAgICAgYm9vbCBtYWtlc0Nh
bGxzID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNXYXRjaGVkID0gZmFsc2U7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
aWYgKGxpc3QtPmF0KGkpLmRvZXNDYWxscygpKQotICAgICAgICAgICAgICAgIHJldHVybiBHZXRC
eUlkU3RhdHVzKE1ha2VzQ2FsbHMsIHRydWUpOworICAgICAgICAgICAgY29uc3QgR2V0QnlJZEFj
Y2VzcyYgYWNjZXNzID0gbGlzdC0+YXQoaSk7CisgICAgICAgICAgICBpZiAoYWNjZXNzLmRvZXND
YWxscygpKSB7CisgICAgICAgICAgICAgICAgbWFrZXNDYWxscyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYWNjZXNzLmlzV2F0
Y2hlZCgpKSB7CisgICAgICAgICAgICAgICAgaXNXYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAobWFr
ZXNDYWxscykKKyAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIHRy
dWUpOworICAgICAgICBpZiAoaXNXYXRjaGVkKQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIEZpbmFsbHkg
ZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBzdHJhdGVneS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0dldEJ5SWRMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0
QnlJZExpc3QuaAkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEludmFsaWQsCiAgICAgICAgIFNpbXBsZUlubGluZSwg
Ly8gVGhpcyBpcyB0aGUgcGF0Y2hlZCBpbmxpbmUgYWNjZXNzLgogICAgICAgICBTaW1wbGVTdHVi
LCAvLyBUaGlzIGlzIGEgc3R1Yi4KKyAgICAgICAgV2F0Y2hlZFN0dWIsCiAgICAgICAgIEdldHRl
ciwKICAgICAgICAgQ3VzdG9tR2V0dGVyCiAgICAgfTsKQEAgLTgwLDYgKzgxLDcgQEAgcHVibGlj
OgogICAgIH0KICAgICAKICAgICBib29sIGRvZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5cGUo
KSA9PSBHZXR0ZXIgfHwgdHlwZSgpID09IEN1c3RvbUdldHRlcjsgfQorICAgIGJvb2wgaXNXYXRj
aGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFdhdGNoZWRTdHViOyB9CiAgICAgCiAgICAg
Ym9vbCB2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDE2ODUzNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsKIGNsYXNzIFdh
dGNocG9pbnRTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4g
ewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6Ci0gICAg
V2F0Y2hwb2ludFNldChXYXRjaHBvaW50U3RhdGUpOwotICAgIH5XYXRjaHBvaW50U2V0KCk7IC8v
IE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90IGZpcmUgYW55IG9mIHRoZSB3YXRjaHBvaW50czsgaWYg
eW91IG5lZWQgdG8ga25vdyB3aGVuIGEgV2F0Y2hwb2ludFNldCBkaWVzIHRoZW4geW91IG5lZWQg
YSBzZXBhcmF0ZSBtZWNoYW5pc20gZm9yIHRoaXMuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2F0
Y2hwb2ludFNldChXYXRjaHBvaW50U3RhdGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5XYXRj
aHBvaW50U2V0KCk7IC8vIE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90IGZpcmUgYW55IG9mIHRoZSB3
YXRjaHBvaW50czsgaWYgeW91IG5lZWQgdG8ga25vdyB3aGVuIGEgV2F0Y2hwb2ludFNldCBkaWVz
IHRoZW4geW91IG5lZWQgYSBzZXBhcmF0ZSBtZWNoYW5pc20gZm9yIHRoaXMuCiAgICAgCiAgICAg
Ly8gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnJvbSBhbm90aGVyIHRocmVhZC4gSXQgbWF5IHJl
dHVybiBhbiBvbGQKICAgICAvLyBzdGF0ZS4gR3VhcmFudGVlcyB0aGF0IGlmICpmaXJzdCogcmVh
ZCB0aGUgc3RhdGUoKSBvZiB0aGUgdGhpbmcgYmVpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDggKzI4NSw4IEBAIHN0
YXRpYyBGdW5jdGlvblB0ciBjdXN0b21Gb3IoY29uc3QgUHV0UHIKIHN0YXRpYyB2b2lkIGdlbmVy
YXRlQnlJZFN0dWIoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBCeUlkU3R1YktpbmQga2luZCwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLAogICAgIEZ1bmN0aW9uUHRyIGN1c3RvbSwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBj
b3VudCwKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBi
b29sIGxvYWRUYXJnZXRGcm9tUHJveHksIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwK
LSAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJvdXRp
bmU+JiBzdHViUm91dGluZSkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBib29sIGxvYWRUYXJnZXRGcm9tUHJveHksIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRTZXQsCisgICAgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRp
b25MYWJlbCBzbG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGlu
ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0
YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CkBAIC0zMjksNiArMzI5
LDkgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICBpZiAoc3RydWN0dXJlLT50
eXBlSW5mbygpLm5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpKQogICAgICAgICB2
bS0+cmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkocHJvcGVydHlOYW1lLCBzdHVi
SW5mby5hZGRXYXRjaHBvaW50KGNvZGVCbG9jaykpOwogCisgICAgaWYgKHdhdGNocG9pbnRTZXQp
CisgICAgICAgIHdhdGNocG9pbnRTZXQtPmFkZChzdHViSW5mby5hZGRXYXRjaHBvaW50KGNvZGVC
bG9jaykpOworCiAgICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAg
IEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgaWYgKGNoYWluKSB7CkBAIC02OTIsNiAr
Njk1LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgIC8v
IE9wdGltaXplIHNlbGYgYWNjZXNzLgogICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZh
bHVlCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAgICAgICYmICFzbG90
LndhdGNocG9pbnRTZXQoKQogICAgICAgICAmJiBNYWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRy
QWxpZ25lZEFkZHJlc3NPZmZzZXQobWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAgICAgICAgICAgcmVwYXRjaEJ5SWRTZWxmQWNjZXNz
KCp2bSwgY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCksIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QsIHRydWUpOwogICAgICAg
ICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRTZWxmKCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlKTsKQEAgLTc4MywxMiArNzg3LDEzIEBAIHN0YXRpYyBib29sIHRy
eUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0
dWJSb3V0aW5lOwogICAgIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgICAgIGV4ZWMsIGtpbmRGb3Io
c2xvdCksIGlkZW50LCBjdXN0b21Gb3Ioc2xvdCksIHN0dWJJbmZvLCBwcm90b3R5cGVDaGFpbiwg
Y291bnQsIG9mZnNldCwgCi0gICAgICAgIHN0cnVjdHVyZSwgbG9hZFRhcmdldEZyb21Qcm94eSwg
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGVsdGFDYWxsVG9Eb25lKSwKKyAgICAgICAgc3RydWN0dXJlLCBsb2FkVGFyZ2V0RnJvbVByb3h5
LCBzbG90LndhdGNocG9pbnRTZXQoKSwgCisgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSksCiAgICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldChzdHViSW5m
bykpLCBzdHViUm91dGluZSk7CiAgICAgCiAgICAgR2V0QnlJZEFjY2Vzczo6QWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlOwogICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSkKLSAgICAgICAgYWNj
ZXNzVHlwZSA9IEdldEJ5SWRBY2Nlc3M6OlNpbXBsZVN0dWI7CisgICAgICAgIGFjY2Vzc1R5cGUg
PSBzbG90LndhdGNocG9pbnRTZXQoKSA/IEdldEJ5SWRBY2Nlc3M6OldhdGNoZWRTdHViIDogR2V0
QnlJZEFjY2Vzczo6U2ltcGxlU3R1YjsKICAgICBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0
dGVyKCkpCiAgICAgICAgIGFjY2Vzc1R5cGUgPSBHZXRCeUlkQWNjZXNzOjpHZXR0ZXI7CiAgICAg
ZWxzZQpAQCAtMTIwMSw3ICsxMjA2LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4
ZWNTdGF0ZSogZQogCiAgICAgICAgIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgICAgICAgICBleGVj
LCBraW5kRm9yKHNsb3QpLCBpZGVudCwgY3VzdG9tRm9yKHNsb3QpLCBzdHViSW5mbywgcHJvdG90
eXBlQ2hhaW4sIGNvdW50LAotICAgICAgICAgICAgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGZhbHNlLAor
ICAgICAgICAgICAgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGZhbHNlLCBudWxscHRyLAogICAgICAgICAg
ICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGVsdGFDYWxsVG9Eb25lKSwKICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpLAog
ICAgICAgICAgICAgc3R1YlJvdXRpbmUpOwpAQCAtMTMzMyw3ICsxMzM4LDcgQEAgc3RhdGljIGJv
b2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogCiAgICAgICAgIGdlbmVyYXRlQnlJZFN0
dWIoCiAgICAgICAgICAgICBleGVjLCBraW5kRm9yKHNsb3QpLCBwcm9wZXJ0eU5hbWUsIGN1c3Rv
bUZvcihzbG90KSwgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBjb3VudCwKLSAgICAgICAgICAg
IG9mZnNldCwgc3RydWN0dXJlLCBmYWxzZSwKKyAgICAgICAgICAgIG9mZnNldCwgc3RydWN0dXJl
LCBmYWxzZSwgbnVsbHB0ciwKICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSksCiAgICAgICAg
ICAgICBDb2RlTG9jYXRpb25MYWJlbChsaXN0LT5jdXJyZW50U2xvd1BhdGhUYXJnZXQoKSksCiAg
ICAgICAgICAgICBzdHViUm91dGluZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYg
KzYxLDcgQEAgcHVibGljOgogICAgICAgICA6IG1fcHJvcGVydHlUeXBlKFR5cGVVbnNldCkKICAg
ICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICAgICAsIG1fdGhpc1ZhbHVlKHRo
aXNWYWx1ZSkKKyAgICAgICAgLCBtX3dhdGNocG9pbnRTZXQobnVsbHB0cikKICAgICB7CiAgICAg
fQogCkBAIC0xMDQsNiArMTA1LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2xvdEJh
c2U7CiAgICAgfQogCisgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV93YXRjaHBvaW50U2V0OworICAgIH0KKwogICAgIHZvaWQg
c2V0VmFsdWUoSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKQEAgLTIxMCw2ICsyMTYsMTEg
QEAgcHVibGljOgogICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgfQogCisg
ICAgdm9pZCBzZXRXYXRjaHBvaW50U2V0KFdhdGNocG9pbnRTZXQmIHNldCkKKyAgICB7CisgICAg
ICAgIG1fd2F0Y2hwb2ludFNldCA9ICZzZXQ7CisgICAgfQorCiBwcml2YXRlOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAK
QEAgLTIzMiw2ICsyNDMsNyBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0
OwogICAgIGNvbnN0IEpTVmFsdWUgbV90aGlzVmFsdWU7CiAgICAgSlNPYmplY3QqIG1fc2xvdEJh
c2U7CisgICAgV2F0Y2hwb2ludFNldCogbV93YXRjaHBvaW50U2V0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjg1MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxNC0wNS0w
OCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEpT
RE9NV2luZG93IHNob3VsZCBoYXZlIGEgV2F0Y2hwb2ludFNldCB0byBmaXJlIG9uIHdpbmRvdyBj
bG9zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMy
NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHVzIHRvIHJlc2V0IHRoZSBp
bmxpbmUgY2FjaGVzIHRoYXQgYXNzdW1lZCB0aGV5IGNvdWxkIHNraXAgCisgICAgICAgIHRoZSBm
aXJzdCBwYXJ0IG9mIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QgdGhhdCBjaGVja3Mg
aWYgdGhlIHdpbmRvdyBoYXMgCisgICAgICAgIGJlZW4gY2xvc2VkLiBUaGlzIGlzIHBhcnQgb2Yg
Z2V0dGluZyByaWQgb2YgSGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90IG9uIEpTRE9NV2luZG93
LgorCisgICAgICAgIEpTRE9NV2luZG93QmFzZSBub3cgaGFzIGEgV2F0Y2hwb2ludFNldCB0aGF0
IHRoZSB1bmRlcmx5aW5nIERPTVdpbmRvdyBmaXJlcyB3aGVuIGl0cworICAgICAgICBmcmFtZSBp
cyBjbGVhcmVkLiBJbiBnZXRPd25Qcm9wZXJ0eVNsb3QsIHdlIG5vdyBwYXNzIHRoaXMgV2F0Y2hw
b2ludFNldCB0byBQcm9wZXJ0eVNsb3QKKyAgICAgICAgd2hpY2ggd2lsbCBzaGVwaGVyZCBpdCBi
YWNrIHVwIHRvIHRoZSBjb2RlIHRoYXQgZ2VuZXJhdGVzIHRoZSBpbmxpbmUgY2FjaGUgKGFuZCB0
aGUgCisgICAgICAgIFdhdGNocG9pbnQgZm9yIGNsZWFyaW5nIGl0KS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d0Jhc2U6OmZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmcmFtZURlc3Ryb3llZCk6CisKIDIwMTQtMDUtMDkgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV1bTWFjXSBEZXN0cm95
IHRoZSBBVlN0cmVhbURhdGFQYXJzZXIgd2hlbiB0aGUgU291cmNlQnVmZmVyIGlzIHJlbW92ZWQg
ZnJvbSBpdHMgTWVkaWFTb3VyY2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDE2ODUzNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDYgKzYwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kbwogCiBK
U0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVs
bCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQo
KSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCisgICAgLCBtX3dpbmRvd0Nsb3NlV2F0Y2hw
b2ludHMoSXNXYXRjaGVkKQogICAgICwgbV9pbXBsKHdpbmRvdykKICAgICAsIG1fc2hlbGwoc2hl
bGwpCiB7CkBAIC0yNjYsNCArMjY3LDIzIEBAIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEpT
VmFsdWUgdmFsdWUKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZp
cmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKK3sK
KyAgICBKU0M6OlZNJiB2bSA9IEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKTsKKyAgICBXZWJD
b3JlSlNDbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4g
d3JhcHBlcldvcmxkczsKKyAgICBjbGllbnREYXRhLT5nZXRBbGxXb3JsZHMod3JhcHBlcldvcmxk
cyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdyYXBwZXJXb3JsZHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgRE9NT2JqZWN0V3JhcHBlck1hcCYgd3JhcHBlcnMgPSB3cmFwcGVyV29y
bGRzW2ldLT5tX3dyYXBwZXJzOworICAgICAgICBhdXRvIHJlc3VsdCA9IHdyYXBwZXJzLmZpbmQo
d2luZG93KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSB3cmFwcGVycy5lbmQoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyID0gcmVzdWx0LT52
YWx1ZS5nZXQoKTsKKyAgICAgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIEpTRE9NV2luZG93QmFzZSoganNXaW5kb3cgPSBKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvd0Jhc2UqPih3cmFwcGVyKTsKKyAgICAgICAganNXaW5kb3ctPm1fd2luZG93Q2xvc2VXYXRj
aHBvaW50cy5maXJlQWxsKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkocmV2
aXNpb24gMTY4NTM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogc2hlbGwoKSBjb25zdDsKIAogICAgICAgICBz
dGF0aWMgSlNDOjpWTSYgY29tbW9uVk0oKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZmlyZUZyYW1l
Q2xlYXJlZFdhdGNocG9pbnRzRm9yV2luZG93KERPTVdpbmRvdyopOworCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBKU0M6OldhdGNocG9pbnRTZXQgbV93aW5kb3dDbG9zZVdhdGNocG9pbnRzOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9pbXBsOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTY4NTM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDggQEAgYm9vbCBKU0RP
TVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTTwogICAgICAgICAvLyBub3QgYWxsb3dlZC4g
CiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KKyAgICB9IGVsc2UKKyAgICAgICAgc2xvdC5zZXRXYXRjaHBvaW50U2V0KHRoaXNPYmplY3Qt
Pm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cyk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZv
ciBjcm9zcy1kb21haW4gYWNjZXNzIGhlcmUgd2l0aG91dCBwcmludGluZyB0aGUgZ2VuZXJpYyB3
YXJuaW5nIG1lc3NhZ2UKICAgICAvLyBiZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3MgdG8g
c29tZSBmdW5jdGlvbiwganVzdCBkaWZmZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBhY2Nl
c3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDE2ODUzNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU3
LDYgKzQ1Nyw3IEBAIHZvaWQgRE9NV2luZG93OjpmcmFtZURlc3Ryb3llZCgpCiAgICAgd2lsbERl
c3Ryb3lEb2N1bWVudEluRnJhbWUoKTsKICAgICBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6OmZy
YW1lRGVzdHJveWVkKCk7CiAgICAgcmVzZXRET01XaW5kb3dQcm9wZXJ0aWVzKCk7CisgICAgSlNE
T01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2ludHNGb3JXaW5kb3codGhpcyk7
CiB9CiAKIHZvaWQgRE9NV2luZG93Ojp3aWxsRGV0YWNoUGFnZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231177</attachid>
            <date>2014-05-09 12:19:08 -0700</date>
            <delta_ts>2014-05-09 12:52:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132721-20140509121720.patch</filename>
            <type>text/plain</type>
            <size>14165</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA1LTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNET01XaW5kb3cgc2hvdWxkIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRvIGZpcmUg
b24gd2luZG93IGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzI3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyB1cyB0byByZXNldCB0aGUgaW5saW5lIGNhY2hlcyB0
aGF0IGFzc3VtZWQgdGhleSBjb3VsZCBza2lwIAorICAgICAgICB0aGUgZmlyc3QgcGFydCBvZiBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90IHRoYXQgY2hlY2tzIGlmIHRoZSB3aW5kb3cg
aGFzIAorICAgICAgICBiZWVuIGNsb3NlZC4gVGhpcyBpcyBwYXJ0IG9mIGdldHRpbmcgcmlkIG9m
IEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCBvbiBKU0RPTVdpbmRvdy4KKworICAgICAgICBQ
cm9wZXJ0eVNsb3Qgbm93IGFjY2VwdHMgYSBXYXRjaHBvaW50U2V0IHdoaWNoIHRoZSBpbmxpbmUg
Y2FjaGUgY29kZSBjYW4gbG9vayBmb3IKKyAgICAgICAgdG8gc2VlIGlmIGl0IHNob3VsZCBjcmVh
dGUgYSBuZXcgV2F0Y2hwb2ludCBmb3IgdGhhdCBwYXJ0aWN1bGFyIGlubGluZSBjYWNoZSBzaXRl
LgorCisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6
OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgor
ICAgICAgICAoSlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6d2F0Y2hwb2ludFNldCk6CisgICAgICAgIChK
U0M6OlByb3BlcnR5U2xvdDo6c2V0V2F0Y2hwb2ludFNldCk6CisKIDIwMTQtMDUtMDkgIHBlYXZv
QG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0gQ3Jhc2gg
d2hlbiBlbmFibGluZyBERkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzgsMTAgKzE3OCwyMyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3JTCiAgICAgUG9seW1vcnBoaWNHZXRCeUlkTGlzdCogbGlzdCA9IDA7CiAgICAgaWYgKHN0
dWJJbmZvLT5hY2Nlc3NUeXBlID09IGFjY2Vzc19nZXRfYnlfaWRfbGlzdCkgewogICAgICAgICBs
aXN0ID0gc3R1YkluZm8tPnUuZ2V0QnlJZExpc3QubGlzdDsKKyAgICAgICAgYm9vbCBtYWtlc0Nh
bGxzID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNXYXRjaGVkID0gZmFsc2U7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
aWYgKGxpc3QtPmF0KGkpLmRvZXNDYWxscygpKQotICAgICAgICAgICAgICAgIHJldHVybiBHZXRC
eUlkU3RhdHVzKE1ha2VzQ2FsbHMsIHRydWUpOworICAgICAgICAgICAgY29uc3QgR2V0QnlJZEFj
Y2VzcyYgYWNjZXNzID0gbGlzdC0+YXQoaSk7CisgICAgICAgICAgICBpZiAoYWNjZXNzLmRvZXND
YWxscygpKSB7CisgICAgICAgICAgICAgICAgbWFrZXNDYWxscyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYWNjZXNzLmlzV2F0
Y2hlZCgpKSB7CisgICAgICAgICAgICAgICAgaXNXYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAobWFr
ZXNDYWxscykKKyAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIHRy
dWUpOworICAgICAgICBpZiAoaXNXYXRjaGVkKQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIEZpbmFsbHkg
ZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBzdHJhdGVneS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0dldEJ5SWRMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0
QnlJZExpc3QuaAkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEludmFsaWQsCiAgICAgICAgIFNpbXBsZUlubGluZSwg
Ly8gVGhpcyBpcyB0aGUgcGF0Y2hlZCBpbmxpbmUgYWNjZXNzLgogICAgICAgICBTaW1wbGVTdHVi
LCAvLyBUaGlzIGlzIGEgc3R1Yi4KKyAgICAgICAgV2F0Y2hlZFN0dWIsCiAgICAgICAgIEdldHRl
ciwKICAgICAgICAgQ3VzdG9tR2V0dGVyCiAgICAgfTsKQEAgLTgwLDYgKzgxLDcgQEAgcHVibGlj
OgogICAgIH0KICAgICAKICAgICBib29sIGRvZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5cGUo
KSA9PSBHZXR0ZXIgfHwgdHlwZSgpID09IEN1c3RvbUdldHRlcjsgfQorICAgIGJvb2wgaXNXYXRj
aGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFdhdGNoZWRTdHViOyB9CiAgICAgCiAgICAg
Ym9vbCB2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDE2ODUzNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsKIGNsYXNzIFdh
dGNocG9pbnRTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4g
ewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6Ci0gICAg
V2F0Y2hwb2ludFNldChXYXRjaHBvaW50U3RhdGUpOwotICAgIH5XYXRjaHBvaW50U2V0KCk7IC8v
IE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90IGZpcmUgYW55IG9mIHRoZSB3YXRjaHBvaW50czsgaWYg
eW91IG5lZWQgdG8ga25vdyB3aGVuIGEgV2F0Y2hwb2ludFNldCBkaWVzIHRoZW4geW91IG5lZWQg
YSBzZXBhcmF0ZSBtZWNoYW5pc20gZm9yIHRoaXMuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2F0
Y2hwb2ludFNldChXYXRjaHBvaW50U3RhdGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5XYXRj
aHBvaW50U2V0KCk7IC8vIE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90IGZpcmUgYW55IG9mIHRoZSB3
YXRjaHBvaW50czsgaWYgeW91IG5lZWQgdG8ga25vdyB3aGVuIGEgV2F0Y2hwb2ludFNldCBkaWVz
IHRoZW4geW91IG5lZWQgYSBzZXBhcmF0ZSBtZWNoYW5pc20gZm9yIHRoaXMuCiAgICAgCiAgICAg
Ly8gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnJvbSBhbm90aGVyIHRocmVhZC4gSXQgbWF5IHJl
dHVybiBhbiBvbGQKICAgICAvLyBzdGF0ZS4gR3VhcmFudGVlcyB0aGF0IGlmICpmaXJzdCogcmVh
ZCB0aGUgc3RhdGUoKSBvZiB0aGUgdGhpbmcgYmVpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDggKzI4NSw4IEBAIHN0
YXRpYyBGdW5jdGlvblB0ciBjdXN0b21Gb3IoY29uc3QgUHV0UHIKIHN0YXRpYyB2b2lkIGdlbmVy
YXRlQnlJZFN0dWIoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBCeUlkU3R1YktpbmQga2luZCwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLAogICAgIEZ1bmN0aW9uUHRyIGN1c3RvbSwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBj
b3VudCwKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBi
b29sIGxvYWRUYXJnZXRGcm9tUHJveHksIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwK
LSAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJvdXRp
bmU+JiBzdHViUm91dGluZSkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBib29sIGxvYWRUYXJnZXRGcm9tUHJveHksIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRTZXQsCisgICAgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRp
b25MYWJlbCBzbG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGlu
ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0
YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CkBAIC0zMjksNiArMzI5
LDkgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICBpZiAoc3RydWN0dXJlLT50
eXBlSW5mbygpLm5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpKQogICAgICAgICB2
bS0+cmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkocHJvcGVydHlOYW1lLCBzdHVi
SW5mby5hZGRXYXRjaHBvaW50KGNvZGVCbG9jaykpOwogCisgICAgaWYgKHdhdGNocG9pbnRTZXQp
CisgICAgICAgIHdhdGNocG9pbnRTZXQtPmFkZChzdHViSW5mby5hZGRXYXRjaHBvaW50KGNvZGVC
bG9jaykpOworCiAgICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAg
IEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgaWYgKGNoYWluKSB7CkBAIC02OTIsNiAr
Njk1LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgIC8v
IE9wdGltaXplIHNlbGYgYWNjZXNzLgogICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZh
bHVlCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAgICAgICYmICFzbG90
LndhdGNocG9pbnRTZXQoKQogICAgICAgICAmJiBNYWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRy
QWxpZ25lZEFkZHJlc3NPZmZzZXQobWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAgICAgICAgICAgcmVwYXRjaEJ5SWRTZWxmQWNjZXNz
KCp2bSwgY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCksIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QsIHRydWUpOwogICAgICAg
ICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRTZWxmKCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlKTsKQEAgLTc4MywxMiArNzg3LDEzIEBAIHN0YXRpYyBib29sIHRy
eUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0
dWJSb3V0aW5lOwogICAgIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgICAgIGV4ZWMsIGtpbmRGb3Io
c2xvdCksIGlkZW50LCBjdXN0b21Gb3Ioc2xvdCksIHN0dWJJbmZvLCBwcm90b3R5cGVDaGFpbiwg
Y291bnQsIG9mZnNldCwgCi0gICAgICAgIHN0cnVjdHVyZSwgbG9hZFRhcmdldEZyb21Qcm94eSwg
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGVsdGFDYWxsVG9Eb25lKSwKKyAgICAgICAgc3RydWN0dXJlLCBsb2FkVGFyZ2V0RnJvbVByb3h5
LCBzbG90LndhdGNocG9pbnRTZXQoKSwgCisgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSksCiAgICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldChzdHViSW5m
bykpLCBzdHViUm91dGluZSk7CiAgICAgCiAgICAgR2V0QnlJZEFjY2Vzczo6QWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlOwogICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSkKLSAgICAgICAgYWNj
ZXNzVHlwZSA9IEdldEJ5SWRBY2Nlc3M6OlNpbXBsZVN0dWI7CisgICAgICAgIGFjY2Vzc1R5cGUg
PSBzbG90LndhdGNocG9pbnRTZXQoKSA/IEdldEJ5SWRBY2Nlc3M6OldhdGNoZWRTdHViIDogR2V0
QnlJZEFjY2Vzczo6U2ltcGxlU3R1YjsKICAgICBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0
dGVyKCkpCiAgICAgICAgIGFjY2Vzc1R5cGUgPSBHZXRCeUlkQWNjZXNzOjpHZXR0ZXI7CiAgICAg
ZWxzZQpAQCAtMTIwMSw3ICsxMjA2LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4
ZWNTdGF0ZSogZQogCiAgICAgICAgIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgICAgICAgICBleGVj
LCBraW5kRm9yKHNsb3QpLCBpZGVudCwgY3VzdG9tRm9yKHNsb3QpLCBzdHViSW5mbywgcHJvdG90
eXBlQ2hhaW4sIGNvdW50LAotICAgICAgICAgICAgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGZhbHNlLAor
ICAgICAgICAgICAgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGZhbHNlLCBudWxscHRyLAogICAgICAgICAg
ICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGVsdGFDYWxsVG9Eb25lKSwKICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpLAog
ICAgICAgICAgICAgc3R1YlJvdXRpbmUpOwpAQCAtMTMzMyw3ICsxMzM4LDcgQEAgc3RhdGljIGJv
b2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogCiAgICAgICAgIGdlbmVyYXRlQnlJZFN0
dWIoCiAgICAgICAgICAgICBleGVjLCBraW5kRm9yKHNsb3QpLCBwcm9wZXJ0eU5hbWUsIGN1c3Rv
bUZvcihzbG90KSwgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBjb3VudCwKLSAgICAgICAgICAg
IG9mZnNldCwgc3RydWN0dXJlLCBmYWxzZSwKKyAgICAgICAgICAgIG9mZnNldCwgc3RydWN0dXJl
LCBmYWxzZSwgbnVsbHB0ciwKICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSksCiAgICAgICAg
ICAgICBDb2RlTG9jYXRpb25MYWJlbChsaXN0LT5jdXJyZW50U2xvd1BhdGhUYXJnZXQoKSksCiAg
ICAgICAgICAgICBzdHViUm91dGluZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTY4NTM3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYg
KzYxLDcgQEAgcHVibGljOgogICAgICAgICA6IG1fcHJvcGVydHlUeXBlKFR5cGVVbnNldCkKICAg
ICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICAgICAsIG1fdGhpc1ZhbHVlKHRo
aXNWYWx1ZSkKKyAgICAgICAgLCBtX3dhdGNocG9pbnRTZXQobnVsbHB0cikKICAgICB7CiAgICAg
fQogCkBAIC0xMDQsNiArMTA1LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2xvdEJh
c2U7CiAgICAgfQogCisgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV93YXRjaHBvaW50U2V0OworICAgIH0KKwogICAgIHZvaWQg
c2V0VmFsdWUoSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKQEAgLTIxMCw2ICsyMTYsMTEg
QEAgcHVibGljOgogICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgfQogCisg
ICAgdm9pZCBzZXRXYXRjaHBvaW50U2V0KFdhdGNocG9pbnRTZXQmIHNldCkKKyAgICB7CisgICAg
ICAgIG1fd2F0Y2hwb2ludFNldCA9ICZzZXQ7CisgICAgfQorCiBwcml2YXRlOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAK
QEAgLTIzMiw2ICsyNDMsNyBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0
OwogICAgIGNvbnN0IEpTVmFsdWUgbV90aGlzVmFsdWU7CiAgICAgSlNPYmplY3QqIG1fc2xvdEJh
c2U7CisgICAgV2F0Y2hwb2ludFNldCogbV93YXRjaHBvaW50U2V0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjg1MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxNC0wNS0w
OCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEpT
RE9NV2luZG93IHNob3VsZCBoYXZlIGEgV2F0Y2hwb2ludFNldCB0byBmaXJlIG9uIHdpbmRvdyBj
bG9zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMy
NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHVzIHRvIHJlc2V0IHRoZSBp
bmxpbmUgY2FjaGVzIHRoYXQgYXNzdW1lZCB0aGV5IGNvdWxkIHNraXAgCisgICAgICAgIHRoZSBm
aXJzdCBwYXJ0IG9mIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QgdGhhdCBjaGVja3Mg
aWYgdGhlIHdpbmRvdyBoYXMgCisgICAgICAgIGJlZW4gY2xvc2VkLiBUaGlzIGlzIHBhcnQgb2Yg
Z2V0dGluZyByaWQgb2YgSGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90IG9uIEpTRE9NV2luZG93
LgorCisgICAgICAgIEpTRE9NV2luZG93QmFzZSBub3cgaGFzIGEgV2F0Y2hwb2ludFNldCB0aGF0
IHRoZSB1bmRlcmx5aW5nIERPTVdpbmRvdyBmaXJlcyB3aGVuIGl0cworICAgICAgICBmcmFtZSBp
cyBjbGVhcmVkLiBJbiBnZXRPd25Qcm9wZXJ0eVNsb3QsIHdlIG5vdyBwYXNzIHRoaXMgV2F0Y2hw
b2ludFNldCB0byBQcm9wZXJ0eVNsb3QKKyAgICAgICAgd2hpY2ggd2lsbCBzaGVwaGVyZCBpdCBi
YWNrIHVwIHRvIHRoZSBjb2RlIHRoYXQgZ2VuZXJhdGVzIHRoZSBpbmxpbmUgY2FjaGUgKGFuZCB0
aGUgCisgICAgICAgIFdhdGNocG9pbnQgZm9yIGNsZWFyaW5nIGl0KS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d0Jhc2U6OmZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmcmFtZURlc3Ryb3llZCk6CisKIDIwMTQtMDUtMDkgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV1bTWFjXSBEZXN0cm95
IHRoZSBBVlN0cmVhbURhdGFQYXJzZXIgd2hlbiB0aGUgU291cmNlQnVmZmVyIGlzIHJlbW92ZWQg
ZnJvbSBpdHMgTWVkaWFTb3VyY2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDE2ODUzNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDYgKzYwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kbwogCiBK
U0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVs
bCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQo
KSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCisgICAgLCBtX3dpbmRvd0Nsb3NlV2F0Y2hw
b2ludHMoKHdpbmRvdyAmJiB3aW5kb3ctPmZyYW1lKCkpID8gSXNXYXRjaGVkIDogSXNJbnZhbGlk
YXRlZCkKICAgICAsIG1faW1wbCh3aW5kb3cpCiAgICAgLCBtX3NoZWxsKHNoZWxsKQogewpAQCAt
MjY2LDQgKzI2NywyMyBAQCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU1ZhbHVlIHZhbHVl
CiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVh
cmVkV2F0Y2hwb2ludHNGb3JXaW5kb3coRE9NV2luZG93KiB3aW5kb3cpCit7CisgICAgSlNDOjpW
TSYgdm0gPSBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCk7CisgICAgV2ViQ29yZUpTQ2xpZW50
RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKKyAgICBWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+IHdyYXBwZXJXb3Js
ZHM7CisgICAgY2xpZW50RGF0YS0+Z2V0QWxsV29ybGRzKHdyYXBwZXJXb3JsZHMpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB3cmFwcGVyV29ybGRzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIERPTU9iamVjdFdyYXBwZXJNYXAmIHdyYXBwZXJzID0gd3JhcHBlcldvcmxkc1tpXS0+bV93
cmFwcGVyczsKKyAgICAgICAgYXV0byByZXN1bHQgPSB3cmFwcGVycy5maW5kKHdpbmRvdyk7Cisg
ICAgICAgIGlmIChyZXN1bHQgPT0gd3JhcHBlcnMuZW5kKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgSlNDOjpKU09iamVjdCogd3JhcHBlciA9IHJlc3VsdC0+dmFsdWUuZ2V0KCk7
CisgICAgICAgIGlmICghd3JhcHBlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBK
U0RPTVdpbmRvd0Jhc2UqIGpzV2luZG93ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4o
d3JhcHBlcik7CisgICAgICAgIGpzV2luZG93LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMuZmly
ZUFsbCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHJldmlzaW9uIDE2ODUz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTQzo6
Vk0mIGNvbW1vblZNKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGZpcmVGcmFtZUNsZWFyZWRXYXRj
aHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAg
SlNDOjpXYXRjaHBvaW50U2V0IG1fd2luZG93Q2xvc2VXYXRjaHBvaW50czsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1faW1wbDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDE2
ODUzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw4IEBAIGJvb2wgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdChKU08KICAgICAgICAgLy8gbm90IGFsbG93ZWQuIAogICAgICAgICBz
bG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgfSBl
bHNlCisgICAgICAgIHNsb3Quc2V0V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LT5tX3dpbmRvd0Ns
b3NlV2F0Y2hwb2ludHMpOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgY3Jvc3MtZG9t
YWluIGFjY2VzcyBoZXJlIHdpdGhvdXQgcHJpbnRpbmcgdGhlIGdlbmVyaWMgd2FybmluZyBtZXNz
YWdlCiAgICAgLy8gYmVjYXVzZSB3ZSBhbHdheXMgYWxsb3cgYWNjZXNzIHRvIHNvbWUgZnVuY3Rp
b24sIGp1c3QgZGlmZmVyZW50IG9uZXMgZGVwZW5kaW5nIHdoZXRoZXIgYWNjZXNzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxNjg1MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1Nyw2ICs0NTcsNyBA
QCB2b2lkIERPTVdpbmRvdzo6ZnJhbWVEZXN0cm95ZWQoKQogICAgIHdpbGxEZXN0cm95RG9jdW1l
bnRJbkZyYW1lKCk7CiAgICAgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOjpmcmFtZURlc3Ryb3ll
ZCgpOwogICAgIHJlc2V0RE9NV2luZG93UHJvcGVydGllcygpOworICAgIEpTRE9NV2luZG93QmFz
ZTo6ZmlyZUZyYW1lQ2xlYXJlZFdhdGNocG9pbnRzRm9yV2luZG93KHRoaXMpOwogfQogCiB2b2lk
IERPTVdpbmRvdzo6d2lsbERldGFjaFBhZ2UoKQo=
</data>
<flag name="review"
          id="255611"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>