<?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>109308</bug_id>
          
          <creation_ts>2013-02-08 09:28:44 -0800</creation_ts>
          <short_desc>Web Inspector: Add command for selecting files for file input element</short_desc>
          <delta_ts>2013-02-21 01:20:08 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ken Kania">kkania</reporter>
          <assigned_to name="Ken Kania">kkania</assigned_to>
          <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828631</commentid>
    <comment_count>0</comment_count>
    <who name="Ken Kania">kkania</who>
    <bug_when>2013-02-08 09:28:44 -0800</bug_when>
    <thetext>We&apos;d like to support choosing files for a file input element for automation. Proposal:

DOM.setFileInputFiles
nodeId: &lt;NodeId&gt;
files: Array&lt;string&gt;

For the chromium port, we&apos;d have to allow the renderer to access these files in the browser process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828649</commentid>
    <comment_count>1</comment_count>
      <attachid>187334</attachid>
    <who name="Ken Kania">kkania</who>
    <bug_when>2013-02-08 09:54:58 -0800</bug_when>
    <thetext>Created attachment 187334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828992</commentid>
    <comment_count>2</comment_count>
      <attachid>187334</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-09 02:03:44 -0800</bug_when>
    <thetext>Comment on attachment 187334
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:2106
&gt; +                &quot;name&quot;: &quot;setFileInputFiles&quot;,

I am not sure this fits DOM domain well, but I have no better idea.

&gt; LayoutTests/inspector-protocol/dom-focus.html:-6
&gt; -window.addEventListener(&quot;load&quot;, function() {

Please move these in a separate change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829874</commentid>
    <comment_count>3</comment_count>
      <attachid>187613</attachid>
    <who name="Ken Kania">kkania</who>
    <bug_when>2013-02-11 10:45:32 -0800</bug_when>
    <thetext>Created attachment 187613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829924</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-02-11 11:23:24 -0800</bug_when>
    <thetext>Neat. Is this intended to be protocol only (automating interaction with a page through the inspector protocol), or will there be UI for this in the frontend?

Setting arbitrary file paths on an &lt;input type=&quot;file&quot;&gt; through the protocol sounds like it could be dangerous. I&apos;m thinking of remotely inspecting a mobile device where often the file system is obscured to users. Take iOS for instance, setting arbitrary paths through &lt;input type=&quot;file&quot;&gt; is not possible, but if exposed through the protocol here, it would be. Maybe it should just be up to the port to protect against this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829965</commentid>
    <comment_count>5</comment_count>
    <who name="Ken Kania">kkania</who>
    <bug_when>2013-02-11 12:03:01 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Neat. Is this intended to be protocol only (automating interaction with a page through the inspector protocol), or will there be UI for this in the frontend?
&gt; 
&gt; Setting arbitrary file paths on an &lt;input type=&quot;file&quot;&gt; through the protocol sounds like it could be dangerous. I&apos;m thinking of remotely inspecting a mobile device where often the file system is obscured to users. Take iOS for instance, setting arbitrary paths through &lt;input type=&quot;file&quot;&gt; is not possible, but if exposed through the protocol here, it would be. Maybe it should just be up to the port to protect against this?

My intention is only for automation. I think handling the validity/security of the file upload could be done at the port level. Is this feasible for iOS with the current design?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830085</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-02-11 13:50:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Neat. Is this intended to be protocol only (automating interaction with a page through the inspector protocol), or will there be UI for this in the frontend?
&gt; &gt; 
&gt; &gt; Setting arbitrary file paths on an &lt;input type=&quot;file&quot;&gt; through the protocol sounds like it could be dangerous. I&apos;m thinking of remotely inspecting a mobile device where often the file system is obscured to users. Take iOS for instance, setting arbitrary paths through &lt;input type=&quot;file&quot;&gt; is not possible, but if exposed through the protocol here, it would be. Maybe it should just be up to the port to protect against this?
&gt; 
&gt; My intention is only for automation. I think handling the validity/security of the file upload could be done at the port level. Is this feasible for iOS with the current design?

That sounds reasonable. The port should be security conscious if it needs to be.

However, it would still be nice to opt out of this if needed. This could be done in the same way &quot;canClearBrowserCache&quot; and friends are done. An InspectorClient method, like:

    virtual bool canSetFileInputFiles() { return false; }

And an optional protocol method to see if the feature is enabled. If not a protocol method, then an error string with your new method to let the that the front-end, or automated front-end, to know whether or not the feature is supported. This would let the front-end know immediately that things are not supported, instead of failing later attempting the upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830087</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-02-11 13:52:36 -0800</bug_when>
    <thetext>&gt; If not a protocol method, then an error string with your new method to let the that the front-end, or automated front-end, to know whether or not the feature is supported.

Correction: If not a protocol method, then an error result when your new protocol method is called. This would let the front-end, or automated front-end, know whether or not the feature is supported. [...]

Sorry for my poor grammar!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830289</commentid>
    <comment_count>8</comment_count>
      <attachid>187711</attachid>
    <who name="Ken Kania">kkania</who>
    <bug_when>2013-02-11 16:17:49 -0800</bug_when>
    <thetext>Created attachment 187711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830453</commentid>
    <comment_count>9</comment_count>
      <attachid>187711</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-11 18:49:39 -0800</bug_when>
    <thetext>Comment on attachment 187711
Patch

Attachment 187711 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16504359

New failing tests:
inspector-protocol/dom/setFileInputFiles.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830713</commentid>
    <comment_count>10</comment_count>
      <attachid>187711</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-12 01:58:01 -0800</bug_when>
    <thetext>Comment on attachment 187711
Patch

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

&gt; LayoutTests/inspector-protocol/dom/setFileInputFiles.html:6
&gt; +window.addEventListener(&quot;load&quot;, onLoad);

To make it clear that onLoad is executed before runtTest I&apos;d put runtTest() call at the end of onLoad and set onLoad as onload handler for &lt;body&gt;

&gt; LayoutTests/inspector-protocol/dom/setFileInputFiles.html:24
&gt; +    function abortOnError(msg)

WebKit style guide discourages using abbreviations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830714</commentid>
    <comment_count>11</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-12 01:58:51 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; However, it would still be nice to opt out of this if needed. This could be done in the same way &quot;canClearBrowserCache&quot; and friends are done. An InspectorClient method, like:
&gt; 
&gt;     virtual bool canSetFileInputFiles() { return false; }
&gt; 
Why not opt-in by default an have some ports to opt-out when needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830933</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-02-12 07:34:03 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #6)
&gt; &gt; However, it would still be nice to opt out of this if needed. This could be done in the same way &quot;canClearBrowserCache&quot; and friends are done. An InspectorClient method, like:
&gt; &gt; 
&gt; &gt;     virtual bool canSetFileInputFiles() { return false; }
&gt; &gt; 
&gt; Why not opt-in by default an have some ports to opt-out when needed?

I think opt-in makes more sense. This feature is only needed for automation, and that is not the focus for most ports. And as Joe mentioned this can be a security concern that would just be sitting there waiting to be exploited when it isn&apos;t needed by the port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831021</commentid>
    <comment_count>13</comment_count>
      <attachid>187887</attachid>
    <who name="Ken Kania">kkania</who>
    <bug_when>2013-02-12 09:39:48 -0800</bug_when>
    <thetext>Created attachment 187887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831025</commentid>
    <comment_count>14</comment_count>
    <who name="Ken Kania">kkania</who>
    <bug_when>2013-02-12 09:42:36 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=187887) [details]
&gt; Patch

Addressed comments. Made default be to not allow setFileInputFiles. Enabled for chromium and added chromium-specific expectation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838206</commentid>
    <comment_count>15</comment_count>
      <attachid>187887</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 01:20:03 -0800</bug_when>
    <thetext>Comment on attachment 187887
Patch

Clearing flags on attachment: 187887

Committed r143574: &lt;http://trac.webkit.org/changeset/143574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838207</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 01:20:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187334</attachid>
            <date>2013-02-08 09:54:58 -0800</date>
            <delta_ts>2013-02-11 10:45:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109308-20130208095132.patch</filename>
            <type>text/plain</type>
            <size>23251</size>
            <attacher name="Ken Kania">kkania</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE3OWRjOWIwZWM3Nzdi
YWE1MGI2ZjMwNzA1NmVmNzIwMTg3ODBmYy4uMTU2N2M3ZDE4M2E4OTcwY2EzMjBlYmVhYjNkOTM5
ZWVlNzUyOWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTA4ICBLZW4g
S2FuaWEgIDxra2FuaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBjb21tYW5kIGZvciBzZWxlY3RpbmcgZmlsZXMgZm9yIGZpbGUgaW5wdXQgZWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyBtb3ZlIGlu
c3BlY3Rvci1wcm90b2NvbCBET00gdGVzdHMgaW50byBuZXcgc3ViZm9sZGVyLgorCisgICAgICAg
IFRlc3RzOiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJbnB1dEZpbGVzLmh0bWwKKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnNldEZpbGVJbnB1dEZpbGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQp
OgorCiAyMDEzLTAyLTA4ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgTWlncmF0ZSBFeGNlcHRpb25Db2RlIEFTU0VSVHMgaW4gU1ZHIHRvIEFTU0VSVF9OT19FWENF
UFRJT04uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggOGRmZGM1
NWMwMDFlZWMxN2RkZGZhMTAzZjk1YzdjNWQzMzBiODZkZi4uMjY5OWIyYjJjY2I2ODgwZTQ2NTA4
MWMxNTM0NTZiYmVjYWJhNzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgpAQCAtMjA5NywxMCArMjA5NywxOSBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICJuYW1lIjogImZvY3VzIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlk
IiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRvIGZvY3VzLiIgfQorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlw
dGlvbiI6ICJJZCBvZiB0aGUgbm9kZSB0byBmb2N1cy4iIH0KICAgICAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb2N1c2VzIHRoZSBnaXZlbiBlbGVtZW50
LiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0RmlsZUlucHV0RmlsZXMiLAor
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0
aGUgZmlsZSBpbnB1dCBub2RlIHRvIHNldCBmaWxlcyBmb3IuIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImZpbGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBl
IjogInN0cmluZyIgfSwgImRlc2NyaXB0aW9uIjogIkFycmF5IG9mIGZpbGUgcGF0aHMgdG8gc2V0
LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlNldHMgZmlsZXMgZm9yIHRoZSBnaXZlbiBmaWxlIGlucHV0IGVsZW1lbnQuIiwKKyAgICAgICAg
ICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAg
ICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggODRmNmM2ZDE1NzExNjYzOWRkMzNhMDJlNDQxNjEyNTIyMDI4ZTM1OC4u
YmZkOGM3NDFlNmQ5NTI2MjFhNjQ3MmM2MjA0ZjYwN2E1YzQ4NzE3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01OSwxMCArNTksMTMg
QEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZp
bGVMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3Vs
dC5oIgpAQCAtMTIwMCw2ICsxMjAzLDI4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3Vz
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICBlbGVtZW50LT5mb2N1
cygpOwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRGaWxlSW5wdXRGaWxlcyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIGZpbGVzKQoreworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5n
LCBub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQgPSBub2RlLT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghZWxl
bWVudCB8fCAhZWxlbWVudC0+aXNGaWxlVXBsb2FkKCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5n
ID0gIk5vZGUgaXMgbm90IGEgZmlsZSBpbnB1dCBlbGVtZW50IjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgp
OworICAgIGZvciAoSW5zcGVjdG9yQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBmaWxlcy0+
YmVnaW4oKTsgaXRlciAhPSBmaWxlcy0+ZW5kKCk7ICsraXRlcikgeworICAgICAgICBTdHJpbmcg
cGF0aDsKKyAgICAgICAgaWYgKCEoKml0ZXIpLT5hc1N0cmluZygmcGF0aCkpIHsKKyAgICAgICAg
ICAgICplcnJvclN0cmluZyA9ICJGaWxlcyBtdXN0IGJlIHN0cmluZ3MiOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRl
KHBhdGgpKTsKKyAgICB9CisgICAgZWxlbWVudC0+c2V0RmlsZXMoZmlsZUxpc3QpOworfQorCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewogICAgIFN0cmlu
ZyBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6ICIiOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5MTllODY5
M2U5ZjM4ZjkyZGRiYjdmMjY2Y2I1MGMyNjUyZjM5NGUxLi43YWMyZTFlZDQ2MmJmMWI4MDUwMDg5
OGFhOWY2MjU4Y2RmOTM1ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVkbyhFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBtYXJrVW5kb2FibGVTdGF0
ZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhFcnJvclN0cmluZyosIGlu
dCBub2RlSWQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZpbGVzKTsKIAog
ICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnMoTm9kZSosIFZlY3RvcjxFdmVudExpc3RlbmVySW5m
bz4mIGxpc3RlbmVyc0FycmF5LCBib29sIGluY2x1ZGVBbmNlc3RvcnMpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjY3
YmU0MzE5NmU0MGJhZmExNjM2OTliNmVmNTk3ZTFlMGIxNjkwMy4uZDI0N2RiMmQ3MTU2ZGQ0MDE3
MGE0NTNlOGI5Y2RkOTM5ZmI5Zjg0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTA4
ICBLZW4gS2FuaWEgIDxra2FuaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBjb21tYW5kIGZvciBzZWxlY3RpbmcgZmlsZXMgZm9yIGZpbGUgaW5wdXQgZWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzA4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyBt
b3ZlIGluc3BlY3Rvci1wcm90b2NvbCBET00gdGVzdHMgaW50byBuZXcgc3ViZm9sZGVyLgorCisg
ICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS9mb2N1cy1leHBlY3RlZC50eHQ6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLWZvY3VzLWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2ZvY3VzLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLWZvY3VzLmh0bWwuCisg
ICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRo
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBlY3RlZC50eHQuCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWw6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLXJlcXVlc3QtY2hp
bGQtbm9kZXMtZGVwdGguaHRtbC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3Nl
dEZpbGVJbnB1dEZpbGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9y
LXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMi0w
OCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSZXBsYWNlIHdvcmtzcGFjZSB3aXRoIHByb2plY3QgaW4gVUlTb3VyY2VDb2Rl
IGNvbnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2RvbS1mb2N1cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
ZG9tLWZvY3VzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA3
YjVjMjk5MWRlMjczZjM3ODVlYTIwMmMxZmI1NTJmODc1NjBmYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9j
b2wvZG9tLWZvY3VzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAot
IAotZm9jdXNlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
ZG9tLWZvY3VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLWZvY3Vz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4N2I1NGQzMWQ1ZTNiYjJlM2Iz
YTY2OWE3ZWY2ODg5ODYzNzM0NWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1mb2N1cy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLXdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7Ci0gICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigiI3NlY29uZCIpLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgb25Gb2N1
cyk7Ci0KLSAgICBmdW5jdGlvbiBvbkZvY3VzKCkgewotICAgICAgICBsb2coImZvY3VzZWQiKTsK
LSAgICB9Ci19KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgSW5zcGVjdG9yVGVzdC5zZW5k
Q29tbWFuZCgiRE9NLmdldERvY3VtZW50Iiwge30sIG9uR290RG9jdW1lbnQpOwotCi0gICAgZnVu
Y3Rpb24gb25Hb3REb2N1bWVudChtc2cpIHsKLSAgICAgICAgaWYgKG1zZy5lcnJvcikgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXNnLmVycm9yLm1lc3NhZ2UpOwotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICB2YXIgbm9kZSA9IG1zZy5yZXN1bHQucm9vdDsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLnF1ZXJ5U2VsZWN0b3IiLCB7ICJub2RlSWQiOiBu
b2RlLm5vZGVJZCwgInNlbGVjdG9yIjogIiNzZWNvbmQiIH0sIG9uUXVlcnlTZWxlY3Rvcik7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gb25RdWVyeVNlbGVjdG9yKG1zZykgewotICAgICAgICBpZiAo
bXNnLmVycm9yKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtc2cuZXJyb3IubWVz
c2FnZSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHZhciBub2RlID0gbXNnLnJlc3VsdDsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLmZvY3VzIiwgeyAibm9kZUlk
Ijogbm9kZS5ub2RlSWQgfSwgb25Gb2N1cyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gb25Gb2N1
cyhtc2cpIHsKLSAgICAgICAgaWYgKG1zZy5lcnJvcikKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKG1zZy5lcnJvcik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7
Ci0gICAgfQotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KLTxpbnB1dD48L2lucHV0PgotPGlucHV0IGlkPSJzZWNvbmQiPjwvaW5wdXQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9t
LXJlcXVlc3QtY2hpbGQtbm9kZXMtZGVwdGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc2Zjc0ZTlmYjM4MGIyZjZlNzE2MzNk
MWE1OWE0YTg3OGNiMDcwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLXJlcXVlc3QtY2hpbGQt
bm9kZXMtZGVwdGgtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
Ci09PT0gR2V0IHRoZSBEb2N1bWVudCA9PT0KLQotCi09PT0gR2V0IGltbWVkaWF0ZSBjaGlsZHJl
biBvZiB0aGUgYm9keSA9PT0KLQotUEFTUzogRmlyc3QgY2hpbGQgaXMgYSBkaXYKLVBBU1M6IEZp
cnN0IGNoaWxkIGlzIGRpdiNkZXB0aC0xCi1QQVNTOiBGaXJzdCBjaGlsZCBoYXMgb25lIGNoaWxk
Ci1QQVNTOiBGaXJzdCBjaGlsZCBoYXMgbm8gLmNoaWxkcmVuIHByb3BlcnR5Ci0KLT09PSBHZXQg
YWxsIGNoaWxkcmVuIG9mIGRpdiNkZXB0aC0xID09PQotCi1QQVNTOiBkaXYjZGVwdGgtMSBoYXMg
bm9kZXMgOSBsZXZlbHMgZGVlcAotCi09PT0gUGFzcyBhbiBpbnZhbGlkIGRlcHRoID09PQotCi1C
YWNrZW5kIGVycm9yOiBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIGludGVnZXIgYXMgYSBkZXB0
aCBvciAtMSBmb3IgZW50aXJlIHN1YnRyZWUgKC0zMjAwMCkKLQotUEFTUzogRXhwZWN0ZWQgbnVt
YmVyIG9mIHNldENoaWxkTm9kZXMgZXZlbnRzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRo
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYTMzMzE4Njg4NDU3Y2YxM2Vl
NTJlOTJhNmFjMTg4ODRjMTEzNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNo
aWxkLW5vZGVzLWRlcHRoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0KLSAgICB2YXIgZXZlbnRzQ291bnQgPSAwOwotCi0gICAgZ2V0RG9jdW1lbnQoKTsKLQot
ICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJET00uc2V0Q2hpbGROb2RlcyJdID0gZnVu
Y3Rpb24gc2V0Q2hpbGROb2RlcyhtZXNzYWdlT2JqZWN0KQotICAgIHsKLSAgICAgICAgZXZlbnRz
Q291bnQrKzsKLQotICAgICAgICBpZiAoZXZlbnRzQ291bnQgPT09IDEpCi0gICAgICAgICAgICBn
b3RJbW1lZGlhdGVDaGlsZHJlbihtZXNzYWdlT2JqZWN0KTsKLSAgICAgICAgZWxzZSBpZiAoZXZl
bnRzQ291bnQgPT09IDIpCi0gICAgICAgICAgICBnb3RBbGxDaGlsZHJlbihtZXNzYWdlT2JqZWN0
KTsKLSAgICB9OwotICAgIAotICAgIGZ1bmN0aW9uIGdldERvY3VtZW50KCkKLSAgICB7Ci0gICAg
ICAgIC8vIFdlIG11c3QgZmlyc3QgZ2V0IHRoZSBkb2N1bWVudCBzbyB0aGF0IGxhdGVyIG9uIHdl
IG1heSBnZXQgc2Vuc2libGUgbm9kZUlkcy4KLSAgICAgICAgc3RlcCh7Ci0gICAgICAgICAgICBu
YW1lOiAiR2V0IHRoZSBEb2N1bWVudCIsCi0gICAgICAgICAgICBjb21tYW5kOiAiRE9NLmdldERv
Y3VtZW50IiwKLSAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAotICAgICAgICAgICAgY2FsbGJh
Y2s6IGdldEltbWVkaWF0ZUNoaWxkcmVuCi0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBmdW5j
dGlvbiBnZXRJbW1lZGlhdGVDaGlsZHJlbihyZXN1bHQpCi0gICAgewotICAgICAgICB2YXIgYm9k
eUlkID0gcmVzdWx0LnJvb3QuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0ubm9kZUlkOwotICAgICAg
ICBzdGVwKHsKLSAgICAgICAgICAgIG5hbWU6ICJHZXQgaW1tZWRpYXRlIGNoaWxkcmVuIG9mIHRo
ZSBib2R5IiwKLSAgICAgICAgICAgIGNvbW1hbmQ6ICJET00ucmVxdWVzdENoaWxkTm9kZXMiLAot
ICAgICAgICAgICAgcGFyYW1ldGVyczogeyJub2RlSWQiOiBib2R5SWR9Ci0gICAgICAgIH0pOwot
ICAgIH07Ci0KLSAgICBmdW5jdGlvbiBnb3RJbW1lZGlhdGVDaGlsZHJlbihtZXNzYWdlT2JqZWN0
KQotICAgIHsKLSAgICAgICAgdmFyIGZpcnN0Q2hpbGQgPSBtZXNzYWdlT2JqZWN0LnBhcmFtcy5u
b2Rlc1swXTsKLSAgICAgICAgYXNzZXJ0KCJGaXJzdCBjaGlsZCBpcyBhIGRpdiIsIGZpcnN0Q2hp
bGQubG9jYWxOYW1lLCAiZGl2Iik7Ci0gICAgICAgIGFzc2VydCgiRmlyc3QgY2hpbGQgaXMgZGl2
I2RlcHRoLTEiLCBmaXJzdENoaWxkLmF0dHJpYnV0ZXNbMV0sICJkZXB0aC0xIik7Ci0gICAgICAg
IGFzc2VydCgiRmlyc3QgY2hpbGQgaGFzIG9uZSBjaGlsZCIsIGZpcnN0Q2hpbGQuY2hpbGROb2Rl
Q291bnQsIDEpOwotICAgICAgICBhc3NlcnQoIkZpcnN0IGNoaWxkIGhhcyBubyAuY2hpbGRyZW4g
cHJvcGVydHkiLCBmaXJzdENoaWxkLmNoaWxkcmVuLCB1bmRlZmluZWQpOwotCi0gICAgICAgIHN0
ZXAoewotICAgICAgICAgICAgbmFtZTogIkdldCBhbGwgY2hpbGRyZW4gb2YgZGl2I2RlcHRoLTEi
LAotICAgICAgICAgICAgY29tbWFuZDogIkRPTS5yZXF1ZXN0Q2hpbGROb2RlcyIsCi0gICAgICAg
ICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IGZpcnN0Q2hpbGQubm9kZUlkLCAiZGVwdGgiOiAt
MX0KLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIGdvdEFsbENoaWxkcmVuKG1l
c3NhZ2VPYmplY3QpCi0gICAgewotICAgICAgICB2YXIgZGVwdGggPSAxOwotICAgICAgICB2YXIg
Zmlyc3RDaGlsZCA9IG1lc3NhZ2VPYmplY3QucGFyYW1zLm5vZGVzWzBdOwotICAgICAgICB2YXIg
bm9kZSA9IGZpcnN0Q2hpbGQ7Ci0gICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUuY2hpbGRyZW4p
IHsKLSAgICAgICAgICAgIGRlcHRoKys7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS5jaGlsZHJl
blswXTsKLSAgICAgICAgfQotCi0gICAgICAgIGFzc2VydCgiZGl2I2RlcHRoLTEgaGFzIG5vZGVz
IDkgbGV2ZWxzIGRlZXAiLCBkZXB0aCwgOSk7Ci0KLSAgICAgICAgc3RlcCh7Ci0gICAgICAgICAg
ICBuYW1lOiAiUGFzcyBhbiBpbnZhbGlkIGRlcHRoIiwKLSAgICAgICAgICAgIGNvbW1hbmQ6ICJE
T00ucmVxdWVzdENoaWxkTm9kZXMiLAotICAgICAgICAgICAgcGFyYW1ldGVyczogeyJub2RlSWQi
OiBmaXJzdENoaWxkLm5vZGVJZCwgImRlcHRoIjogMH0sCi0gICAgICAgICAgICBjYWxsYmFjazog
ZmluaXNoVGVzdAotICAgICAgICB9KTsKLSAgICB9OwotICAgIAotICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKQotICAgIHsKLSAgICAgICAgYXNzZXJ0KCJFeHBlY3RlZCBudW1iZXIgb2Ygc2V0Q2hp
bGROb2RlcyBldmVudHMiLCBldmVudHNDb3VudCwgMik7Ci0gICAgICAgIAotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBzdGVwKHRl
c3QpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG49PT0gIiArIHRlc3QubmFt
ZSArICIgPT09XG4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCh0ZXN0LmNv
bW1hbmQsIHRlc3QucGFyYW1ldGVycywgZnVuY3Rpb24obWVzc2FnZU9iamVjdCkgewotICAgICAg
ICAgICAgaWYgKG1lc3NhZ2VPYmplY3QuaGFzT3duUHJvcGVydHkoImVycm9yIikpCi0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJhY2tlbmQgZXJyb3I6ICIgKyBtZXNzYWdlT2Jq
ZWN0LmVycm9yLm1lc3NhZ2UgKyAiICgiICsgbWVzc2FnZU9iamVjdC5lcnJvci5jb2RlICsgIilc
biIpOwotCi0gICAgICAgICAgICBpZiAodGVzdC5jYWxsYmFjaykKLSAgICAgICAgICAgICAgICB0
ZXN0LmNhbGxiYWNrKG1lc3NhZ2VPYmplY3QucmVzdWx0KTsKLSAgICAgICAgfSk7Ci0gICAgfTsK
LQotICAgIGZ1bmN0aW9uIGFzc2VydChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQotICAgIHsK
LSAgICAgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUEFTUzogIiArIG1lc3NhZ2UpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsgbWVzc2FnZSArICIsIGV4cGVjdGVkIFwiIiAr
IGV4cGVjdGVkICsgIlwiIGJ1dCBnb3QgXCIiICsgYWN0dWFsICsgIlwiIik7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB9Ci0gICAgfTsKLQotfTsK
LQotd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbiAo
KSB7Ci0gICAgcnVuVGVzdCgpOwotfSwgZmFsc2UpOwotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotCi08ZGl2IGlkPSJkZXB0aC0xIj4KLSAgICA8ZGl2IGlkPSJkZXB0aC0yIj4KLSAgICAg
ICAgPGRpdiBpZD0iZGVwdGgtMyI+Ci0gICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC00Ij4KLSAg
ICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC01Ij4KLSAgICAgICAgICAgICAgICAgICAgPGRp
diBpZD0iZGVwdGgtNiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC03
Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC04Ij4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtOSI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC0xMCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+
Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9mb2N1cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2ZvY3VzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMDdiNWMyOTkxZGUyNzNmMzc4NWVhMjAyYzFmYjU1MmY4NzU2MGZjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9mb2N1cy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACisgCitmb2N1c2VkCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vZm9jdXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9kb20vZm9jdXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzQyNzJjOWE2MjMxYTA4
ZGMwNzgzMzA5NzAxZDQ4OTMzNDc3OTcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9mb2N1cy5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0
aW9uKCkgeworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWNvbmQiKS5hZGRFdmVudExp
c3RlbmVyKCJmb2N1cyIsIG9uRm9jdXMpOworCisgICAgZnVuY3Rpb24gb25Gb2N1cygpIHsKKyAg
ICAgICAgbG9nKCJmb2N1c2VkIik7CisgICAgfQorfSk7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5nZXREb2N1bWVudCIsIHt9LCBvbkdv
dERvY3VtZW50KTsKKworICAgIGZ1bmN0aW9uIG9uR290RG9jdW1lbnQobXNnKSB7CisgICAgICAg
IGlmIChtc2cuZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG1zZy5lcnJv
ci5tZXNzYWdlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdmFyIG5vZGUgPSBtc2cucmVz
dWx0LnJvb3Q7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5xdWVyeVNl
bGVjdG9yIiwgeyAibm9kZUlkIjogbm9kZS5ub2RlSWQsICJzZWxlY3RvciI6ICIjc2Vjb25kIiB9
LCBvblF1ZXJ5U2VsZWN0b3IpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uUXVlcnlTZWxlY3Rv
cihtc2cpIHsKKyAgICAgICAgaWYgKG1zZy5lcnJvcikgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2cobXNnLmVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB2
YXIgbm9kZSA9IG1zZy5yZXN1bHQ7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQo
IkRPTS5mb2N1cyIsIHsgIm5vZGVJZCI6IG5vZGUubm9kZUlkIH0sIG9uRm9jdXMpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIG9uRm9jdXMobXNnKSB7CisgICAgICAgIGlmIChtc2cuZXJyb3IpCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtc2cuZXJyb3IpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8aW5wdXQ+PC9pbnB1dD4KKzxpbnB1dCBpZD0ic2Vj
b25kIj48L2lucHV0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vcmVxdWVzdC1jaGlsZC1u
b2Rlcy1kZXB0aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2Zjc0ZTlmYjM4MGIyZjZlNzE2
MzNkMWE1OWE0YTg3OGNiMDcwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9kb20vcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMSBAQAorCis9PT0gR2V0IHRoZSBEb2N1bWVudCA9PT0KKworCis9PT0gR2V0
IGltbWVkaWF0ZSBjaGlsZHJlbiBvZiB0aGUgYm9keSA9PT0KKworUEFTUzogRmlyc3QgY2hpbGQg
aXMgYSBkaXYKK1BBU1M6IEZpcnN0IGNoaWxkIGlzIGRpdiNkZXB0aC0xCitQQVNTOiBGaXJzdCBj
aGlsZCBoYXMgb25lIGNoaWxkCitQQVNTOiBGaXJzdCBjaGlsZCBoYXMgbm8gLmNoaWxkcmVuIHBy
b3BlcnR5CisKKz09PSBHZXQgYWxsIGNoaWxkcmVuIG9mIGRpdiNkZXB0aC0xID09PQorCitQQVNT
OiBkaXYjZGVwdGgtMSBoYXMgbm9kZXMgOSBsZXZlbHMgZGVlcAorCis9PT0gUGFzcyBhbiBpbnZh
bGlkIGRlcHRoID09PQorCitCYWNrZW5kIGVycm9yOiBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZl
IGludGVnZXIgYXMgYSBkZXB0aCBvciAtMSBmb3IgZW50aXJlIHN1YnRyZWUgKC0zMjAwMCkKKwor
UEFTUzogRXhwZWN0ZWQgbnVtYmVyIG9mIHNldENoaWxkTm9kZXMgZXZlbnRzCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vcmVxdWVzdC1jaGlsZC1ub2Rl
cy1kZXB0aC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXF1ZXN0
LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEwNWJmZjExMzRjMjhhNzg1YTdi
ODNlNjNlM2FkMDg0MjhjNzVkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9kb20vcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC5odG1sCkBAIC0wLDAg
KzEsMTQwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3Rv
Y29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKworICAgIHZhciBldmVudHNDb3VudCA9IDA7CisKKyAgICBn
ZXREb2N1bWVudCgpOworCisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRPTS5zZXRD
aGlsZE5vZGVzIl0gPSBmdW5jdGlvbiBzZXRDaGlsZE5vZGVzKG1lc3NhZ2VPYmplY3QpCisgICAg
eworICAgICAgICBldmVudHNDb3VudCsrOworCisgICAgICAgIGlmIChldmVudHNDb3VudCA9PT0g
MSkKKyAgICAgICAgICAgIGdvdEltbWVkaWF0ZUNoaWxkcmVuKG1lc3NhZ2VPYmplY3QpOworICAg
ICAgICBlbHNlIGlmIChldmVudHNDb3VudCA9PT0gMikKKyAgICAgICAgICAgIGdvdEFsbENoaWxk
cmVuKG1lc3NhZ2VPYmplY3QpOworICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gZ2V0RG9jdW1l
bnQoKQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVzdCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50IHNv
IHRoYXQgbGF0ZXIgb24gd2UgbWF5IGdldCBzZW5zaWJsZSBub2RlSWRzLgorICAgICAgICBzdGVw
KHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIERvY3VtZW50IiwKKyAgICAgICAgICAgIGNv
bW1hbmQ6ICJET00uZ2V0RG9jdW1lbnQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30sCisg
ICAgICAgICAgICBjYWxsYmFjazogZ2V0SW1tZWRpYXRlQ2hpbGRyZW4KKyAgICAgICAgfSk7Cisg
ICAgfTsKKworICAgIGZ1bmN0aW9uIGdldEltbWVkaWF0ZUNoaWxkcmVuKHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHZhciBib2R5SWQgPSByZXN1bHQucm9vdC5jaGlsZHJlblswXS5jaGlsZHJlblsx
XS5ub2RlSWQ7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCBpbW1lZGlh
dGUgY2hpbGRyZW4gb2YgdGhlIGJvZHkiLAorICAgICAgICAgICAgY29tbWFuZDogIkRPTS5yZXF1
ZXN0Q2hpbGROb2RlcyIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IGJvZHlJ
ZH0KKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdvdEltbWVkaWF0ZUNoaWxk
cmVuKG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IG1lc3Nh
Z2VPYmplY3QucGFyYW1zLm5vZGVzWzBdOworICAgICAgICBhc3NlcnQoIkZpcnN0IGNoaWxkIGlz
IGEgZGl2IiwgZmlyc3RDaGlsZC5sb2NhbE5hbWUsICJkaXYiKTsKKyAgICAgICAgYXNzZXJ0KCJG
aXJzdCBjaGlsZCBpcyBkaXYjZGVwdGgtMSIsIGZpcnN0Q2hpbGQuYXR0cmlidXRlc1sxXSwgImRl
cHRoLTEiKTsKKyAgICAgICAgYXNzZXJ0KCJGaXJzdCBjaGlsZCBoYXMgb25lIGNoaWxkIiwgZmly
c3RDaGlsZC5jaGlsZE5vZGVDb3VudCwgMSk7CisgICAgICAgIGFzc2VydCgiRmlyc3QgY2hpbGQg
aGFzIG5vIC5jaGlsZHJlbiBwcm9wZXJ0eSIsIGZpcnN0Q2hpbGQuY2hpbGRyZW4sIHVuZGVmaW5l
ZCk7CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IGFsbCBjaGlsZHJl
biBvZiBkaXYjZGVwdGgtMSIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLnJlcXVlc3RDaGls
ZE5vZGVzIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogZmlyc3RDaGlsZC5u
b2RlSWQsICJkZXB0aCI6IC0xfQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24g
Z290QWxsQ2hpbGRyZW4obWVzc2FnZU9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBkZXB0aCA9
IDE7CisgICAgICAgIHZhciBmaXJzdENoaWxkID0gbWVzc2FnZU9iamVjdC5wYXJhbXMubm9kZXNb
MF07CisgICAgICAgIHZhciBub2RlID0gZmlyc3RDaGlsZDsKKyAgICAgICAgd2hpbGUgKG5vZGUg
JiYgbm9kZS5jaGlsZHJlbikgeworICAgICAgICAgICAgZGVwdGgrKzsKKyAgICAgICAgICAgIG5v
ZGUgPSBub2RlLmNoaWxkcmVuWzBdOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0KCJkaXYj
ZGVwdGgtMSBoYXMgbm9kZXMgOSBsZXZlbHMgZGVlcCIsIGRlcHRoLCA5KTsKKworICAgICAgICBz
dGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJQYXNzIGFuIGludmFsaWQgZGVwdGgiLAorICAgICAg
ICAgICAgY29tbWFuZDogIkRPTS5yZXF1ZXN0Q2hpbGROb2RlcyIsCisgICAgICAgICAgICBwYXJh
bWV0ZXJzOiB7Im5vZGVJZCI6IGZpcnN0Q2hpbGQubm9kZUlkLCAiZGVwdGgiOiAwfSwKKyAgICAg
ICAgICAgIGNhbGxiYWNrOiBmaW5pc2hUZXN0CisgICAgICAgIH0pOworICAgIH07CisgICAgCisg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCisgICAgeworICAgICAgICBhc3NlcnQoIkV4cGVjdGVk
IG51bWJlciBvZiBzZXRDaGlsZE5vZGVzIGV2ZW50cyIsIGV2ZW50c0NvdW50LCAyKTsKKyAgICAg
ICAgCisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfTsKKworICAg
IGZ1bmN0aW9uIHN0ZXAodGVzdCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJc
bj09PSAiICsgdGVzdC5uYW1lICsgIiA9PT1cbiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNl
bmRDb21tYW5kKHRlc3QuY29tbWFuZCwgdGVzdC5wYXJhbWV0ZXJzLCBmdW5jdGlvbihtZXNzYWdl
T2JqZWN0KSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgi
ZXJyb3IiKSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQmFja2VuZCBlcnJv
cjogIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IubWVzc2FnZSArICIgKCIgKyBtZXNzYWdlT2JqZWN0
LmVycm9yLmNvZGUgKyAiKVxuIik7CisKKyAgICAgICAgICAgIGlmICh0ZXN0LmNhbGxiYWNrKQor
ICAgICAgICAgICAgICAgIHRlc3QuY2FsbGJhY2sobWVzc2FnZU9iamVjdC5yZXN1bHQpOworICAg
ICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gYXNzZXJ0KG1lc3NhZ2UsIGFjdHVhbCwg
ZXhwZWN0ZWQpCisgICAgeworICAgICAgICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTOiAiICsgbWVzc2FnZSk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6ICIgKyBtZXNzYWdlICsg
IiwgZXhwZWN0ZWQgXCIiICsgZXhwZWN0ZWQgKyAiXCIgYnV0IGdvdCBcIiIgKyBhY3R1YWwgKyAi
XCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAg
IH0KKyAgICB9OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExv
YWRlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImRlcHRoLTEiPgorICAgIDxkaXYgaWQ9
ImRlcHRoLTIiPgorICAgICAgICA8ZGl2IGlkPSJkZXB0aC0zIj4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImRlcHRoLTQiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTUiPgorICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC02Ij4KKyAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgaWQ9ImRlcHRoLTciPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9
ImRlcHRoLTgiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0
aC05Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRo
LTEwIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJ
bnB1dEZpbGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9k
b20vc2V0RmlsZUlucHV0RmlsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyZWEwMzg2NWQ2
MjkzODBiNzE2ZjI0YmVhMjIwZGRkOTRhOTNlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJbnB1dEZpbGVzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDYgQEAKKyAKK0ZpbGUgY291bnQ6IDIKK05hbWU6IGZpbGUxCitOYW1lOiBm
aWxlMgorUmVjZWl2ZWQgZXhwZWN0ZWQgZXJyb3I6IE5vZGUgaXMgbm90IGEgZmlsZSBpbnB1dCBl
bGVtZW50CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20v
c2V0RmlsZUlucHV0RmlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9k
b20vc2V0RmlsZUlucHV0RmlsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWVlODFkYjRhNThlYzljNzg2
YzY1YTRiZThlOTExNDgxMTNkODYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sCkBAIC0wLDAgKzEsNTQg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0IikuYWRk
RXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgb25DaGFuZ2UpOworCisgICAgZnVuY3Rpb24gb25DaGFu
Z2UoZXZlbnQpIHsKKyAgICAgICAgdmFyIGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzOworICAg
ICAgICBsb2coIkZpbGUgY291bnQ6ICIgKyBmaWxlcy5sZW5ndGgpOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBsb2coIk5hbWU6
ICIgKyBmaWxlc1tpXS5uYW1lKTsKKyAgICAgICAgfQorICAgIH0KK30pOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBhYm9ydE9uRXJyb3IobXNnKSB7CisgICAgICAgIGlmICht
c2cuZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG1zZy5lcnJvci5tZXNz
YWdlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJET00uZ2V0RG9jdW1l
bnQiLCB7fSwgb25Hb3REb2N1bWVudCk7CisKKyAgICBmdW5jdGlvbiBvbkdvdERvY3VtZW50KG1z
ZykgeworICAgICAgICBhYm9ydE9uRXJyb3IobXNnKTsKKyAgICAgICAgdmFyIG5vZGUgPSBtc2cu
cmVzdWx0LnJvb3Q7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5xdWVy
eVNlbGVjdG9yQWxsIiwgeyAibm9kZUlkIjogbm9kZS5ub2RlSWQsICJzZWxlY3RvciI6ICJpbnB1
dCIgfSwgb25RdWVyeVNlbGVjdG9yQWxsKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvblF1ZXJ5
U2VsZWN0b3JBbGwobXNnKSB7CisgICAgICAgIGFib3J0T25FcnJvcihtc2cpOworICAgICAgICB2
YXIgaWRzID0gbXNnLnJlc3VsdC5ub2RlSWRzOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRD
b21tYW5kKCJET00uc2V0RmlsZUlucHV0RmlsZXMiLCB7ICJub2RlSWQiOiBpZHNbMF0sICJmaWxl
cyI6IFsiZmlsZTEiLCAiZmlsZTIiXSB9LCBhYm9ydE9uRXJyb3IpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LnNlbmRDb21tYW5kKCJET00uc2V0RmlsZUlucHV0RmlsZXMiLCB7ICJub2RlSWQiOiBp
ZHNbMV0sICJmaWxlcyI6IFsiZmlsZTEiLCAiZmlsZTIiXSB9LCBvbkJhZFNldEZpbGVzKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBvbkJhZFNldEZpbGVzKG1zZykgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiUmVjZWl2ZWQgZXhwZWN0ZWQgZXJyb3I6ICIgKyBtc2cuZXJyb3IubWVzc2Fn
ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxpbnB1dCB0eXBl
PSJmaWxlIj48L2lucHV0PgorPGlucHV0PjwvaW5wdXQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187613</attachid>
            <date>2013-02-11 10:45:32 -0800</date>
            <delta_ts>2013-02-11 16:17:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109308-20130211104203.patch</filename>
            <type>text/plain</type>
            <size>7976</size>
            <attacher name="Ken Kania">kkania</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk0OTM2MGNlYzM4MTNm
OGNkNmVmYzI3Njg3Y2RmYWI0NzlhNzkyZC4uNmRmYmEwNzIwNTkwZTY2NjI3ZWNmMDJjYmQxODBh
MmRhNTEwY2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTExICBLZW4g
S2FuaWEgIDxra2FuaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBjb21tYW5kIGZvciBzZWxlY3RpbmcgZmlsZXMgZm9yIGZpbGUgaW5wdXQgZWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVj
dG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRGaWxlSW5w
dXRGaWxlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKwogMjAxMy0wMi0x
MSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFRpbWVsaW5lOiBpbnZhbGlkYXRlIGFuZCBmb3JjZSBsb2NhdGlvbnMgYXJlIHNh
bWUgZm9yIExheW91dCByZWNvcmRzIGNhdXNlZCBieSBzdHlsZSByZWNhbGN1bGFpdG9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNTQwZDJiYWVmZTZmNjgzMzkz
YWJkZGFjM2E5MGU5ZDM2OGZkYWI5Yy4uMjIzM2VkYWYyYmU0ZTgyZTVhZmVhN2VmMWI2MGQ3ZjI2
ODQ0ODJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjA1
MSwxMCArMjA1MSwxOSBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjog
ImZvY3VzIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0
aW9uIjogIklkIG9mIHRoZSBub2RlIHRvIGZvY3VzLiIgfQorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBv
ZiB0aGUgbm9kZSB0byBmb2N1cy4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJGb2N1c2VzIHRoZSBnaXZlbiBlbGVtZW50LiIsCiAgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0RmlsZUlucHV0RmlsZXMiLAorICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJ
ZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgZmlsZSBpbnB1
dCBub2RlIHRvIHNldCBmaWxlcyBmb3IuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImZpbGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmluZyIg
fSwgImRlc2NyaXB0aW9uIjogIkFycmF5IG9mIGZpbGUgcGF0aHMgdG8gc2V0LiIgfQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldHMgZmlsZXMg
Zm9yIHRoZSBnaXZlbiBmaWxlIGlucHV0IGVsZW1lbnQuIiwKKyAgICAgICAgICAgICAgICAiaGlk
ZGVuIjogdHJ1ZQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjog
WwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggODRmNmM2ZDE1NzExNjYzOWRkMzNhMDJlNDQxNjEyNTIyMDI4ZTM1OC4uYmZkOGM3NDFlNmQ5
NTI2MjFhNjQ3MmM2MjA0ZjYwN2E1YzQ4NzE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01OSwxMCArNTksMTMgQEAKICNpbmNsdWRl
ICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MVGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgpAQCAtMTIw
MCw2ICsxMjAzLDI4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3VzKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICBlbGVtZW50LT5mb2N1cygpOwogfQogCit2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZpbGVz
KQoreworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQgPSBub2RlLT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghZWxlbWVudCB8fCAhZWxl
bWVudC0+aXNGaWxlVXBsb2FkKCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vZGUgaXMg
bm90IGEgZmlsZSBpbnB1dCBlbGVtZW50IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBS
ZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGZvciAo
SW5zcGVjdG9yQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBmaWxlcy0+YmVnaW4oKTsgaXRl
ciAhPSBmaWxlcy0+ZW5kKCk7ICsraXRlcikgeworICAgICAgICBTdHJpbmcgcGF0aDsKKyAgICAg
ICAgaWYgKCEoKml0ZXIpLT5hc1N0cmluZygmcGF0aCkpIHsKKyAgICAgICAgICAgICplcnJvclN0
cmluZyA9ICJGaWxlcyBtdXN0IGJlIHN0cmluZ3MiOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGgpKTsKKyAg
ICB9CisgICAgZWxlbWVudC0+c2V0RmlsZXMoZmlsZUxpc3QpOworfQorCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewogICAgIFN0cmluZyBvYmplY3RHcm91
cE5hbWUgPSBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6ICIiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5MTllODY5M2U5ZjM4ZjkyZGRi
YjdmMjY2Y2I1MGMyNjUyZjM5NGUxLi43YWMyZTFlZDQ2MmJmMWI4MDUwMDg5OGFhOWY2MjU4Y2Rm
OTM1ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
aApAQCAtMTQ5LDYgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkbyhFcnJv
clN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBtYXJrVW5kb2FibGVTdGF0ZShFcnJvclN0cmlu
ZyopOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhFcnJvclN0cmluZyosIGludCBub2RlSWQpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmluZyosIGludCBub2Rl
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZpbGVzKTsKIAogICAgIHZvaWQgZ2V0
RXZlbnRMaXN0ZW5lcnMoTm9kZSosIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVy
c0FycmF5LCBib29sIGluY2x1ZGVBbmNlc3RvcnMpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGQyM2QwMjVmNjRjM2Qy
MTg1NzA1YWUyYmJkZjlkZDgwZTA1NmZjZi4uNDc5NTk4YTZlYzU2NjQ5MTNiYzc4YTFhMTdjOTZm
NGVlNGQyOTFjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTExICBLZW4gS2FuaWEg
IDxra2FuaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBjb21t
YW5kIGZvciBzZWxlY3RpbmcgZmlsZXMgZm9yIGZpbGUgaW5wdXQgZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9j
b2wvZG9tL3NldEZpbGVJbnB1dEZpbGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sOiBBZGRlZC4KKwog
MjAxMy0wMi0xMSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lOiBpbnZhbGlkYXRlIGFuZCBmb3JjZSBsb2NhdGlv
bnMgYXJlIHNhbWUgZm9yIExheW91dCByZWNvcmRzIGNhdXNlZCBieSBzdHlsZSByZWNhbGN1bGFp
dG9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZp
bGVJbnB1dEZpbGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20vc2V0RmlsZUlucHV0RmlsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyZWEwMzg2
NWQ2MjkzODBiNzE2ZjI0YmVhMjIwZGRkOTRhOTNlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJbnB1dEZpbGVzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDYgQEAKKyAKK0ZpbGUgY291bnQ6IDIKK05hbWU6IGZpbGUxCitOYW1l
OiBmaWxlMgorUmVjZWl2ZWQgZXhwZWN0ZWQgZXJyb3I6IE5vZGUgaXMgbm90IGEgZmlsZSBpbnB1
dCBlbGVtZW50CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9k
b20vc2V0RmlsZUlucHV0RmlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20vc2V0RmlsZUlucHV0RmlsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2Q3ZGNkZmY0MmFiN2M1
NzFjNWVhODBlODkxZDNiY2QzNTVmMTljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sCkBAIC0wLDAgKzEs
NjIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIG9uTG9hZCk7CisKK2Z1bmN0aW9uIG9uTG9hZCgpCit7CisgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigiaW5wdXQiKS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBvbkNoYW5nZSk7
CisKKyAgICBmdW5jdGlvbiBvbkNoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmaWxl
cyA9IGV2ZW50LnRhcmdldC5maWxlczsKKyAgICAgICAgbG9nKCJGaWxlIGNvdW50OiAiICsgZmls
ZXMubGVuZ3RoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkr
KykgeworICAgICAgICAgICAgbG9nKCJOYW1lOiAiICsgZmlsZXNbaV0ubmFtZSk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZ1bmN0aW9uIGFib3J0T25F
cnJvcihtc2cpCisgICAgeworICAgICAgICBpZiAobXNnLmVycm9yKSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhtc2cuZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgSW5zcGVjdG9y
VGVzdC5zZW5kQ29tbWFuZCgiRE9NLmdldERvY3VtZW50Iiwge30sIG9uR290RG9jdW1lbnQpOwor
CisgICAgZnVuY3Rpb24gb25Hb3REb2N1bWVudChtc2cpCisgICAgeworICAgICAgICBhYm9ydE9u
RXJyb3IobXNnKTsKKyAgICAgICAgdmFyIG5vZGUgPSBtc2cucmVzdWx0LnJvb3Q7CisgICAgICAg
IEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5xdWVyeVNlbGVjdG9yQWxsIiwgeyAibm9k
ZUlkIjogbm9kZS5ub2RlSWQsICJzZWxlY3RvciI6ICJpbnB1dCIgfSwgb25RdWVyeVNlbGVjdG9y
QWxsKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvblF1ZXJ5U2VsZWN0b3JBbGwobXNnKQorICAg
IHsKKyAgICAgICAgYWJvcnRPbkVycm9yKG1zZyk7CisgICAgICAgIHZhciBpZHMgPSBtc2cucmVz
dWx0Lm5vZGVJZHM7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5zZXRG
aWxlSW5wdXRGaWxlcyIsIHsgIm5vZGVJZCI6IGlkc1swXSwgImZpbGVzIjogWyJmaWxlMSIsICJm
aWxlMiJdIH0sIGFib3J0T25FcnJvcik7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1h
bmQoIkRPTS5zZXRGaWxlSW5wdXRGaWxlcyIsIHsgIm5vZGVJZCI6IGlkc1sxXSwgImZpbGVzIjog
WyJmaWxlMSIsICJmaWxlMiJdIH0sIG9uQmFkU2V0RmlsZXMpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIG9uQmFkU2V0RmlsZXMobXNnKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlJlY2VpdmVkIGV4cGVjdGVkIGVycm9yOiAiICsgbXNnLmVycm9yLm1lc3NhZ2UpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8aW5wdXQgdHlwZT0iZmlsZSI+PC9p
bnB1dD4KKzxpbnB1dCB0eXBlPSJ0ZXh0Ij48L2lucHV0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187711</attachid>
            <date>2013-02-11 16:17:49 -0800</date>
            <delta_ts>2013-02-12 09:39:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109308-20130211161419.patch</filename>
            <type>text/plain</type>
            <size>15055</size>
            <attacher name="Ken Kania">kkania</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk0OTM2MGNlYzM4MTNm
OGNkNmVmYzI3Njg3Y2RmYWI0NzlhNzkyZC4uNjg1MTZlNzcwNzYyMTk3ZDliN2U0ZDBiMWZiYTk5
OTI1Y2I2Yjc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAyLTExICBLZW4g
S2FuaWEgIDxra2FuaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBjb21tYW5kIGZvciBzZWxlY3RpbmcgZmlsZXMgZm9yIGZpbGUgaW5wdXQgZWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVj
dG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpjYW5TZXRGaWxlSW5wdXRG
aWxlcyk6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5z
cGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEZpbGVJbnB1dEZpbGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKEluc3BlY3RvckRPTUFn
ZW50KToKKwogMjAxMy0wMi0xMSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lOiBpbnZhbGlkYXRlIGFuZCBmb3Jj
ZSBsb2NhdGlvbnMgYXJlIHNhbWUgZm9yIExheW91dCByZWNvcmRzIGNhdXNlZCBieSBzdHlsZSBy
ZWNhbGN1bGFpdG9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDI3NDNlN2E1YjNlNTI2
ZTJjZTU4MWE2MmE5ZWY3NjkxNzdmOWE4YzEuLjkxMGMzOTMwNzgxZDYzNDk4M2RhYTA1OWQzNWNi
ZGU0ZGY5OGRmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTMtMDItMTEgIEtlbiBLYW5pYSAgPGtrYW5pYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogQWRkIGNvbW1hbmQgZm9yIHNlbGVjdGluZyBmaWxlcyBmb3IgZmlsZSBp
bnB1dCBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDkzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yQ2xpZW50SW1wbDo6Y2FuU2V0RmlsZUlucHV0RmlsZXMpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAoSW5zcGVj
dG9yQ2xpZW50SW1wbCk6CisKIDIwMTMtMDItMTEgIEFsZXhlaSBGaWxpcHBvdiAgPGFscGhAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNwbGl0IFByb2ZpbGVyIGRvbWFp
biBpbiBwcm90b2NvbCBpbnRvIFByb2ZpbGVyIGFuZCBIZWFwUHJvZmlsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1NDBkMmJhZWZlNmY2ODMzOTNhYmRkYWMz
YTkwZTlkMzY4ZmRhYjljLi4yMjMzZWRhZjJiZTRlODJlNWFmZWE3ZWYxYjYwZDdmMjY4NDQ4MmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMDUxLDEwICsy
MDUxLDE5IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9jdXMi
LAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAi
SWQgb2YgdGhlIG5vZGUgdG8gZm9jdXMuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBu
b2RlIHRvIGZvY3VzLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkZvY3VzZXMgdGhlIGdpdmVuIGVsZW1lbnQuIiwKICAgICAgICAgICAgICAg
ICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJzZXRGaWxlSW5wdXRGaWxlcyIsCisgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRy
ZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBmaWxlIGlucHV0IG5vZGUg
dG8gc2V0IGZpbGVzIGZvci4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmls
ZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LCAiZGVz
Y3JpcHRpb24iOiAiQXJyYXkgb2YgZmlsZSBwYXRocyB0byBzZXQuIiB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyBmaWxlcyBmb3IgdGhl
IGdpdmVuIGZpbGUgaW5wdXQgZWxlbWVudC4iLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0
cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYzg2ZTcwYjNhMDk3
MzVhZDI0MTQ4OGZlNDliNTIwZjliN2Y1YWViNi4uOTRjMmU5NDc2MDBmMDg1ZWI3MDJmMzgxMDMx
ODUwNTI4OWNmNzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaApAQCAtOTEsNiArOTEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
SmF2YVNjcmlwdERpYWxvZyhib29sKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBi
b29sIGNhblNldEZpbGVJbnB1dEZpbGVzKCkgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHN0YXRp
YyBib29sIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoUGFnZSogZnJvbnRlbmRQYWdl
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGRmNTBkMGUxNjIzZDhmMjAwNzMz
MzM5MzI0MmM1M2YyYjc3OWUxN2IuLmVhYTk4MTYyMGE3MGNjNWVmZTdmMGU0MzA5ODBiMTcwNDEx
ODQxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9y
Q29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBt
X3BhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQocGFn
ZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGRv
bUFnZW50UHRyKEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+
IGRvbUFnZW50UHRyKEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCksIGluc3BlY3RvckNsaWVudCkpOwogICAgIG1fZG9t
QWdlbnQgPSBkb21BZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZG9tQWdlbnRQ
dHIucmVsZWFzZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggODRmNmM2ZDE1NzExNjYzOWRkMzNhMDJlNDQxNjEyNTIyMDI4ZTM1
OC4uZGZhYWE4NTQ0ZTAwZTBmOTdjYTllN2QwMTRiOTY1NGY5NDI2ZGJkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01OSwxNSArNTks
MTkgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUg
IkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJzRmFjdG9yeS5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKQEAgLTE5NCwxMSArMTk4LDEyIEBAIFN0cmlu
ZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICByZXR1cm4gIiI7CiB9CiAKLUluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01B
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIGluc3BlY3RvclN0
YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVj
dG9yT3ZlcmxheSogb3ZlcmxheSkKK0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIGluc3BlY3RvclN0YXRl
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9y
T3ZlcmxheSogb3ZlcmxheSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NQWdlbnQ+KCJET00iLCBpbnN0cnVtZW50aW5nQWdlbnRz
LCBpbnNwZWN0b3JTdGF0ZSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fb3Zl
cmxheShvdmVybGF5KQorICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9mcm9udGVuZCgw
KQogICAgICwgbV9kb21MaXN0ZW5lcigwKQogICAgICwgbV9sYXN0Tm9kZUlkKDEpCkBAIC0xMjAw
LDYgKzEyMDUsMzQgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Zm9jdXMoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIGVsZW1lbnQtPmZvY3VzKCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEZpbGVJbnB1dEZpbGVzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZmlsZXMp
Cit7CisgICAgaWYgKCFtX2NsaWVudC0+Y2FuU2V0RmlsZUlucHV0RmlsZXMoKSkgeworICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiQ2Fubm90IHNldCBmaWxlIGlucHV0IGZpbGVzIjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5n
LCBub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQgPSBub2RlLT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghZWxl
bWVudCB8fCAhZWxlbWVudC0+aXNGaWxlVXBsb2FkKCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5n
ID0gIk5vZGUgaXMgbm90IGEgZmlsZSBpbnB1dCBlbGVtZW50IjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRl
KCk7CisgICAgZm9yIChJbnNwZWN0b3JBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGZpbGVz
LT5iZWdpbigpOyBpdGVyICE9IGZpbGVzLT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIFN0cmlu
ZyBwYXRoOworICAgICAgICBpZiAoISgqaXRlciktPmFzU3RyaW5nKCZwYXRoKSkgeworICAgICAg
ICAgICAgKmVycm9yU3RyaW5nID0gIkZpbGVzIG11c3QgYmUgc3RyaW5ncyI7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVh
dGUocGF0aCkpOworICAgIH0KKyAgICBlbGVtZW50LT5zZXRGaWxlcyhmaWxlTGlzdCk7Cit9CisK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgU3Ry
aW5nIG9iamVjdEdyb3VwTmFtZSA9IG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDkxOWU4
NjkzZTlmMzhmOTJkZGJiN2YyNjZjYjUwYzI2NTJmMzk0ZTEuLjI0YWQ3YzVlY2MyYmYyMmMwOTJl
Y2FhNmEwNTI2NzNhM2Q3OWMxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIERPTUVkaXRvcjsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50OworY2xhc3MgSW5zcGVjdG9y
Q2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JIaXN0b3J5
OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKQEAgLTEwMiw5ICsxMDMsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7CiAgICAg
fTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTUFnZW50PiBjcmVhdGUoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQsIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJs
YXkqIG92ZXJsYXkpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIGluc3BlY3RvclN0
YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVj
dG9yT3ZlcmxheSogb3ZlcmxheSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRPTUFnZW50KGluc3RydW1lbnRpbmdB
Z2VudHMsIHBhZ2VBZ2VudCwgaW5zcGVjdG9yU3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdlciwg
b3ZlcmxheSkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRPTUFnZW50
KGluc3RydW1lbnRpbmdBZ2VudHMsIHBhZ2VBZ2VudCwgaW5zcGVjdG9yU3RhdGUsIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgb3ZlcmxheSwgY2xpZW50KSk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0
cmluZyB0b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTE0OSw2ICsxNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZG8oRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgbWFya1VuZG9hYmxlU3RhdGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFs
IHZvaWQgZm9jdXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RmlsZUlucHV0RmlsZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+JiBmaWxlcyk7CiAKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzKE5v
ZGUqLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSwgYm9vbCBpbmNs
dWRlQW5jZXN0b3JzKTsKIApAQCAtMjA0LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBpbnQgcHVz
aE5vZGVQYXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSopOworICAgIEluc3BlY3RvckRPTUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JDb21wb3Np
dGVTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkqLCBJbnNw
ZWN0b3JDbGllbnQqKTsKIAogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmlu
ZyosIGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOwogICAg
IFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9y
T2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JP
YmplY3QpOwpAQCAtMjM2LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKKyAgICBJbnNw
ZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIEluc3BlY3RvckZyb250ZW5kOjpET00qIG1fZnJv
bnRlbmQ7CiAgICAgRE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVuZXI7CiAgICAgTm9kZVRvSWRNYXAg
bV9kb2N1bWVudE5vZGVUb0lkTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAppbmRleCAwNmZjZGE5NjQxYzg1NjNiYjIwMzcyNjY4
MGIxODFiN2MzN2JlMjQ3Li44OTc2M2JkY2U2ZDdlMWUzOGEwNmVhOTc0NTRmZGM4ZmFmNjhjOWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmNwcApAQCAtMjI4LDYgKzIyOCwxMSBAQCBib29sIEluc3BlY3RvckNsaWVudEltcGw6Omhh
bmRsZUphdmFTY3JpcHREaWFsb2coYm9vbCBhY2NlcHQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIEluc3BlY3RvckNsaWVudEltcGw6OmNhblNldEZpbGVJbnB1dEZpbGVzKCkKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogV2ViRGV2VG9vbHNBZ2VudEltcGwqIEluc3BlY3RvckNsaWVu
dEltcGw6OmRldlRvb2xzQWdlbnQoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJEZXZU
b29sc0FnZW50SW1wbCo+KG1faW5zcGVjdGVkV2ViVmlldy0+ZGV2VG9vbHNBZ2VudCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAppbmRl
eCBkMjU2ZDIwZmI0YjIwNDkxNWY2NDgzYWNlNGU0ZDIwMmUyZTUxNWM3Li43OTRjNjZlYjg3OWEz
MDYyNWEyYmZlOTczMjUyMzU5MzBhZDE3OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC05NCw2ICs5NCw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVKYXZhU2NyaXB0RGlhbG9nKGJvb2wgYWNjZXB0KTsK
IAorICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGaWxlSW5wdXRGaWxlcygpOworCiBwcml2YXRlOgog
ICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50KCk7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZDIz
ZDAyNWY2NGMzZDIxODU3MDVhZTJiYmRmOWRkODBlMDU2ZmNmLi40Nzk1OThhNmVjNTY2NDkxM2Jj
NzhhMWExN2M5NmY0ZWU0ZDI5MWM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDItMTEg
IEtlbiBLYW5pYSAgPGtrYW5pYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIGNvbW1hbmQgZm9yIHNlbGVjdGluZyBmaWxlcyBmb3IgZmlsZSBpbnB1dCBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzMDgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci1wcm90b2NvbC9kb20vc2V0RmlsZUlucHV0RmlsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJbnB1dEZpbGVzLmh0bWw6
IEFkZGVkLgorCiAyMDEzLTAyLTExICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmU6IGludmFsaWRhdGUgYW5kIGZv
cmNlIGxvY2F0aW9ucyBhcmUgc2FtZSBmb3IgTGF5b3V0IHJlY29yZHMgY2F1c2VkIGJ5IHN0eWxl
IHJlY2FsY3VsYWl0b24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20vc2V0RmlsZUlucHV0RmlsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzJlYTAzODY1ZDYyOTM4MGI3MTZmMjRiZWEyMjBkZGQ5NGE5M2ViMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vc2V0RmlsZUlucHV0Rmls
ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorIAorRmlsZSBjb3VudDogMgorTmFtZTog
ZmlsZTEKK05hbWU6IGZpbGUyCitSZWNlaXZlZCBleHBlY3RlZCBlcnJvcjogTm9kZSBpcyBub3Qg
YSBmaWxlIGlucHV0IGVsZW1lbnQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZDdk
Y2RmZjQyYWI3YzU3MWM1ZWE4MGU4OTFkM2JjZDM1NWYxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJbnB1dEZpbGVzLmh0bWwK
QEAgLTAsMCArMSw2MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNl
cy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3dpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgb25Mb2FkKTsKKworZnVuY3Rpb24gb25Mb2FkKCkKK3sKKyAgICBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIs
IG9uQ2hhbmdlKTsKKworICAgIGZ1bmN0aW9uIG9uQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdmFyIGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzOworICAgICAgICBsb2coIkZpbGUgY291
bnQ6ICIgKyBmaWxlcy5sZW5ndGgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBsb2coIk5hbWU6ICIgKyBmaWxlc1tpXS5uYW1l
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZnVuY3Rp
b24gYWJvcnRPbkVycm9yKG1zZykKKyAgICB7CisgICAgICAgIGlmIChtc2cuZXJyb3IpIHsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG1zZy5lcnJvci5tZXNzYWdlKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJET00uZ2V0RG9jdW1lbnQiLCB7fSwgb25Hb3RE
b2N1bWVudCk7CisKKyAgICBmdW5jdGlvbiBvbkdvdERvY3VtZW50KG1zZykKKyAgICB7CisgICAg
ICAgIGFib3J0T25FcnJvcihtc2cpOworICAgICAgICB2YXIgbm9kZSA9IG1zZy5yZXN1bHQucm9v
dDsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLnF1ZXJ5U2VsZWN0b3JB
bGwiLCB7ICJub2RlSWQiOiBub2RlLm5vZGVJZCwgInNlbGVjdG9yIjogImlucHV0IiB9LCBvblF1
ZXJ5U2VsZWN0b3JBbGwpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uUXVlcnlTZWxlY3RvckFs
bChtc2cpCisgICAgeworICAgICAgICBhYm9ydE9uRXJyb3IobXNnKTsKKyAgICAgICAgdmFyIGlk
cyA9IG1zZy5yZXN1bHQubm9kZUlkczsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFu
ZCgiRE9NLnNldEZpbGVJbnB1dEZpbGVzIiwgeyAibm9kZUlkIjogaWRzWzBdLCAiZmlsZXMiOiBb
ImZpbGUxIiwgImZpbGUyIl0gfSwgYWJvcnRPbkVycm9yKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5zZW5kQ29tbWFuZCgiRE9NLnNldEZpbGVJbnB1dEZpbGVzIiwgeyAibm9kZUlkIjogaWRzWzFd
LCAiZmlsZXMiOiBbImZpbGUxIiwgImZpbGUyIl0gfSwgb25CYWRTZXRGaWxlcyk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gb25CYWRTZXRGaWxlcyhtc2cpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiUmVjZWl2ZWQgZXhwZWN0ZWQgZXJyb3I6ICIgKyBtc2cuZXJyb3IubWVzc2Fn
ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxpbnB1dCB0eXBl
PSJmaWxlIj48L2lucHV0PgorPGlucHV0IHR5cGU9InRleHQiPjwvaW5wdXQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187887</attachid>
            <date>2013-02-12 09:39:48 -0800</date>
            <delta_ts>2013-02-21 01:20:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109308-20130212093618.patch</filename>
            <type>text/plain</type>
            <size>15818</size>
            <attacher name="Ken Kania">kkania</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk0OTM2MGNlYzM4MTNm
OGNkNmVmYzI3Njg3Y2RmYWI0NzlhNzkyZC4uMzE5MTIwZDJmYTgxY2Q1YWZlMzcwNjg2NTM2Y2Zl
NWIzNDc4MThhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAyLTEyICBLZW4g
S2FuaWEgIDxra2FuaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBjb21tYW5kIGZvciBzZWxlY3RpbmcgZmlsZXMgZm9yIGZpbGUgaW5wdXQgZWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVj
dG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5odG1sCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpjYW5TZXRGaWxlSW5wdXRG
aWxlcyk6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5z
cGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEZpbGVJbnB1dEZpbGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKEluc3BlY3RvckRPTUFn
ZW50KToKKwogMjAxMy0wMi0xMSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lOiBpbnZhbGlkYXRlIGFuZCBmb3Jj
ZSBsb2NhdGlvbnMgYXJlIHNhbWUgZm9yIExheW91dCByZWNvcmRzIGNhdXNlZCBieSBzdHlsZSBy
ZWNhbGN1bGFpdG9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDI3NDNlN2E1YjNlNTI2
ZTJjZTU4MWE2MmE5ZWY3NjkxNzdmOWE4YzEuLmM5MjVmMzA1YjIxOGIxMTE1OTg3ZjVhZjFkYTI2
NzhmY2JmZDI4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTMtMDItMTIgIEtlbiBLYW5pYSAgPGtrYW5pYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogQWRkIGNvbW1hbmQgZm9yIHNlbGVjdGluZyBmaWxlcyBmb3IgZmlsZSBp
bnB1dCBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDkzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yQ2xpZW50SW1wbDo6Y2FuU2V0RmlsZUlucHV0RmlsZXMpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAoSW5zcGVj
dG9yQ2xpZW50SW1wbCk6CisKIDIwMTMtMDItMTEgIEFsZXhlaSBGaWxpcHBvdiAgPGFscGhAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNwbGl0IFByb2ZpbGVyIGRvbWFp
biBpbiBwcm90b2NvbCBpbnRvIFByb2ZpbGVyIGFuZCBIZWFwUHJvZmlsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1NDBkMmJhZWZlNmY2ODMzOTNhYmRkYWMz
YTkwZTlkMzY4ZmRhYjljLi4yMjMzZWRhZjJiZTRlODJlNWFmZWE3ZWYxYjYwZDdmMjY4NDQ4MmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMDUxLDEwICsy
MDUxLDE5IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9jdXMi
LAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAi
SWQgb2YgdGhlIG5vZGUgdG8gZm9jdXMuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBu
b2RlIHRvIGZvY3VzLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkZvY3VzZXMgdGhlIGdpdmVuIGVsZW1lbnQuIiwKICAgICAgICAgICAgICAg
ICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJzZXRGaWxlSW5wdXRGaWxlcyIsCisgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRy
ZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBmaWxlIGlucHV0IG5vZGUg
dG8gc2V0IGZpbGVzIGZvci4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmls
ZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LCAiZGVz
Y3JpcHRpb24iOiAiQXJyYXkgb2YgZmlsZSBwYXRocyB0byBzZXQuIiB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyBmaWxlcyBmb3IgdGhl
IGdpdmVuIGZpbGUgaW5wdXQgZWxlbWVudC4iLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0
cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYzg2ZTcwYjNhMDk3
MzVhZDI0MTQ4OGZlNDliNTIwZjliN2Y1YWViNi4uOTRjMmU5NDc2MDBmMDg1ZWI3MDJmMzgxMDMx
ODUwNTI4OWNmNzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaApAQCAtOTEsNiArOTEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
SmF2YVNjcmlwdERpYWxvZyhib29sKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBi
b29sIGNhblNldEZpbGVJbnB1dEZpbGVzKCkgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHN0YXRp
YyBib29sIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoUGFnZSogZnJvbnRlbmRQYWdl
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGRmNTBkMGUxNjIzZDhmMjAwNzMz
MzM5MzI0MmM1M2YyYjc3OWUxN2IuLmVhYTk4MTYyMGE3MGNjNWVmZTdmMGU0MzA5ODBiMTcwNDEx
ODQxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9y
Q29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBt
X3BhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQocGFn
ZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGRv
bUFnZW50UHRyKEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+
IGRvbUFnZW50UHRyKEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCksIGluc3BlY3RvckNsaWVudCkpOwogICAgIG1fZG9t
QWdlbnQgPSBkb21BZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZG9tQWdlbnRQ
dHIucmVsZWFzZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggODRmNmM2ZDE1NzExNjYzOWRkMzNhMDJlNDQxNjEyNTIyMDI4ZTM1
OC4uZGZhYWE4NTQ0ZTAwZTBmOTdjYTllN2QwMTRiOTY1NGY5NDI2ZGJkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01OSwxNSArNTks
MTkgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUg
IkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJzRmFjdG9yeS5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKQEAgLTE5NCwxMSArMTk4LDEyIEBAIFN0cmlu
ZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICByZXR1cm4gIiI7CiB9CiAKLUluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01B
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIGluc3BlY3RvclN0
YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVj
dG9yT3ZlcmxheSogb3ZlcmxheSkKK0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIGluc3BlY3RvclN0YXRl
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9y
T3ZlcmxheSogb3ZlcmxheSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NQWdlbnQ+KCJET00iLCBpbnN0cnVtZW50aW5nQWdlbnRz
LCBpbnNwZWN0b3JTdGF0ZSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fb3Zl
cmxheShvdmVybGF5KQorICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9mcm9udGVuZCgw
KQogICAgICwgbV9kb21MaXN0ZW5lcigwKQogICAgICwgbV9sYXN0Tm9kZUlkKDEpCkBAIC0xMjAw
LDYgKzEyMDUsMzQgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Zm9jdXMoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIGVsZW1lbnQtPmZvY3VzKCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEZpbGVJbnB1dEZpbGVzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZmlsZXMp
Cit7CisgICAgaWYgKCFtX2NsaWVudC0+Y2FuU2V0RmlsZUlucHV0RmlsZXMoKSkgeworICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiQ2Fubm90IHNldCBmaWxlIGlucHV0IGZpbGVzIjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5n
LCBub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQgPSBub2RlLT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghZWxl
bWVudCB8fCAhZWxlbWVudC0+aXNGaWxlVXBsb2FkKCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5n
ID0gIk5vZGUgaXMgbm90IGEgZmlsZSBpbnB1dCBlbGVtZW50IjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRl
KCk7CisgICAgZm9yIChJbnNwZWN0b3JBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGZpbGVz
LT5iZWdpbigpOyBpdGVyICE9IGZpbGVzLT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIFN0cmlu
ZyBwYXRoOworICAgICAgICBpZiAoISgqaXRlciktPmFzU3RyaW5nKCZwYXRoKSkgeworICAgICAg
ICAgICAgKmVycm9yU3RyaW5nID0gIkZpbGVzIG11c3QgYmUgc3RyaW5ncyI7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVh
dGUocGF0aCkpOworICAgIH0KKyAgICBlbGVtZW50LT5zZXRGaWxlcyhmaWxlTGlzdCk7Cit9CisK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgU3Ry
aW5nIG9iamVjdEdyb3VwTmFtZSA9IG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDkxOWU4
NjkzZTlmMzhmOTJkZGJiN2YyNjZjYjUwYzI2NTJmMzk0ZTEuLjI0YWQ3YzVlY2MyYmYyMmMwOTJl
Y2FhNmEwNTI2NzNhM2Q3OWMxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIERPTUVkaXRvcjsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50OworY2xhc3MgSW5zcGVjdG9y
Q2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JIaXN0b3J5
OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKQEAgLTEwMiw5ICsxMDMsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7CiAgICAg
fTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTUFnZW50PiBjcmVhdGUoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQsIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJs
YXkqIG92ZXJsYXkpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIGluc3BlY3RvclN0
YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVj
dG9yT3ZlcmxheSogb3ZlcmxheSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRPTUFnZW50KGluc3RydW1lbnRpbmdB
Z2VudHMsIHBhZ2VBZ2VudCwgaW5zcGVjdG9yU3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdlciwg
b3ZlcmxheSkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRPTUFnZW50
KGluc3RydW1lbnRpbmdBZ2VudHMsIHBhZ2VBZ2VudCwgaW5zcGVjdG9yU3RhdGUsIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgb3ZlcmxheSwgY2xpZW50KSk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0
cmluZyB0b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTE0OSw2ICsxNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZG8oRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgbWFya1VuZG9hYmxlU3RhdGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFs
IHZvaWQgZm9jdXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RmlsZUlucHV0RmlsZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+JiBmaWxlcyk7CiAKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzKE5v
ZGUqLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSwgYm9vbCBpbmNs
dWRlQW5jZXN0b3JzKTsKIApAQCAtMjA0LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBpbnQgcHVz
aE5vZGVQYXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSopOworICAgIEluc3BlY3RvckRPTUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JDb21wb3Np
dGVTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkqLCBJbnNw
ZWN0b3JDbGllbnQqKTsKIAogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmlu
ZyosIGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOwogICAg
IFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9y
T2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JP
YmplY3QpOwpAQCAtMjM2LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKKyAgICBJbnNw
ZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIEluc3BlY3RvckZyb250ZW5kOjpET00qIG1fZnJv
bnRlbmQ7CiAgICAgRE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVuZXI7CiAgICAgTm9kZVRvSWRNYXAg
bV9kb2N1bWVudE5vZGVUb0lkTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAppbmRleCAwNmZjZGE5NjQxYzg1NjNiYjIwMzcyNjY4
MGIxODFiN2MzN2JlMjQ3Li44OTc2M2JkY2U2ZDdlMWUzOGEwNmVhOTc0NTRmZGM4ZmFmNjhjOWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmNwcApAQCAtMjI4LDYgKzIyOCwxMSBAQCBib29sIEluc3BlY3RvckNsaWVudEltcGw6Omhh
bmRsZUphdmFTY3JpcHREaWFsb2coYm9vbCBhY2NlcHQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIEluc3BlY3RvckNsaWVudEltcGw6OmNhblNldEZpbGVJbnB1dEZpbGVzKCkKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogV2ViRGV2VG9vbHNBZ2VudEltcGwqIEluc3BlY3RvckNsaWVu
dEltcGw6OmRldlRvb2xzQWdlbnQoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJEZXZU
b29sc0FnZW50SW1wbCo+KG1faW5zcGVjdGVkV2ViVmlldy0+ZGV2VG9vbHNBZ2VudCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAppbmRl
eCBkMjU2ZDIwZmI0YjIwNDkxNWY2NDgzYWNlNGU0ZDIwMmUyZTUxNWM3Li43OTRjNjZlYjg3OWEz
MDYyNWEyYmZlOTczMjUyMzU5MzBhZDE3OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC05NCw2ICs5NCw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVKYXZhU2NyaXB0RGlhbG9nKGJvb2wgYWNjZXB0KTsK
IAorICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGaWxlSW5wdXRGaWxlcygpOworCiBwcml2YXRlOgog
ICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50KCk7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZDIz
ZDAyNWY2NGMzZDIxODU3MDVhZTJiYmRmOWRkODBlMDU2ZmNmLi5lYjAzNDE4NzUyMDVkMmJmNjRl
MDIwMjNiZjA1ZTVlMGZkNjRkM2MxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDItMTIg
IEtlbiBLYW5pYSAgPGtrYW5pYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIGNvbW1hbmQgZm9yIHNlbGVjdGluZyBmaWxlcyBmb3IgZmlsZSBpbnB1dCBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzMDgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci1wcm90b2NvbC9kb20vc2V0RmlsZUlucHV0RmlsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJbnB1dEZpbGVzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci1wcm90b2NvbC9k
b20vc2V0RmlsZUlucHV0RmlsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMy0wMi0xMSAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFRpbWVsaW5lOiBpbnZhbGlkYXRlIGFuZCBmb3JjZSBsb2NhdGlvbnMgYXJlIHNhbWUg
Zm9yIExheW91dCByZWNvcmRzIGNhdXNlZCBieSBzdHlsZSByZWNhbGN1bGFpdG9uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJbnB1dEZpbGVz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vc2V0Rmls
ZUlucHV0RmlsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNzM5ZjNlY2M4MmRiMGJkNTgw
NTAyM2NiYzU0Y2U5NThjZmYyYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvZG9tL3NldEZpbGVJbnB1dEZpbGVzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKyAKK1JlY2VpdmVkIGVycm9yOiBDYW5ub3Qgc2V0IGZpbGUgaW5wdXQgZmlsZXMK
K1JlY2VpdmVkIGVycm9yOiBDYW5ub3Qgc2V0IGZpbGUgaW5wdXQgZmlsZXMKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxl
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE3YWMwNDY0OTUxZWQzNDlkZmVmODQ1MTQxNDNmM2JiMDc1NTEx
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9t
L3NldEZpbGVJbnB1dEZpbGVzLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2Z1bmN0aW9uIG9uTG9hZCgpCit7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiaW5wdXQiKS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBvbkNoYW5nZSk7CisKKyAgICBm
dW5jdGlvbiBvbkNoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmaWxlcyA9IGV2ZW50
LnRhcmdldC5maWxlczsKKyAgICAgICAgbG9nKCJGaWxlIGNvdW50OiAiICsgZmlsZXMubGVuZ3Ro
KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykgeworICAg
ICAgICAgICAgbG9nKCJOYW1lOiAiICsgZmlsZXNbaV0ubmFtZSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZ1bmN0aW9u
IGFib3J0T25FcnJvcihtZXNzYWdlKQorICAgIHsKKyAgICAgICAgaWYgKG1lc3NhZ2UuZXJyb3Ip
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG1lc3NhZ2UuZXJyb3IubWVzc2FnZSk7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLmdldERvY3VtZW50Iiwg
e30sIG9uR290RG9jdW1lbnQpOworCisgICAgZnVuY3Rpb24gb25Hb3REb2N1bWVudChtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgYWJvcnRPbkVycm9yKG1lc3NhZ2UpOworICAgICAgICB2YXIgbm9k
ZSA9IG1lc3NhZ2UucmVzdWx0LnJvb3Q7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1h
bmQoIkRPTS5xdWVyeVNlbGVjdG9yQWxsIiwgeyAibm9kZUlkIjogbm9kZS5ub2RlSWQsICJzZWxl
Y3RvciI6ICJpbnB1dCIgfSwgb25RdWVyeVNlbGVjdG9yQWxsKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBvblF1ZXJ5U2VsZWN0b3JBbGwobWVzc2FnZSkKKyAgICB7CisgICAgICAgIGFib3J0T25F
cnJvcihtZXNzYWdlKTsKKyAgICAgICAgdmFyIGlkcyA9IG1lc3NhZ2UucmVzdWx0Lm5vZGVJZHM7
CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5zZXRGaWxlSW5wdXRGaWxl
cyIsIHsgIm5vZGVJZCI6IGlkc1swXSwgImZpbGVzIjogWyJmaWxlMSIsICJmaWxlMiJdIH0sIG9u
U2V0RmlsZXMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJET00uc2V0Rmls
ZUlucHV0RmlsZXMiLCB7ICJub2RlSWQiOiBpZHNbMV0sICJmaWxlcyI6IFsiZmlsZTEiLCAiZmls
ZTIiXSB9LCBvbkJhZFNldEZpbGVzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvblNldEZpbGVz
KG1lc3NhZ2UpCisgICAgeworICAgICAgICBpZiAobWVzc2FnZS5lcnJvcikgeworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlY2VpdmVkIGVycm9yOiAiICsgbWVzc2FnZS5lcnJvci5t
ZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG9uQmFkU2V0RmlsZXMo
bWVzc2FnZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZWNlaXZlZCBlcnJv
cjogIiArIG1lc3NhZ2UuZXJyb3IubWVzc2FnZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ib25Mb2FkKCkiPgorPGlucHV0IHR5cGU9ImZpbGUiPjwvaW5wdXQ+Cis8aW5wdXQgdHlwZT0i
dGV4dCI+PC9pbnB1dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci1wcm90b2NvbC9kb20vc2V0RmlsZUlucHV0Rmls
ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9y
LXByb3RvY29sL2RvbS9zZXRGaWxlSW5wdXRGaWxlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWJhY2QzNzU3OGZkNzkxNjYyYjI2MmJjYzcyYzkwNDdkYmNiYTVjZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci1wcm90b2NvbC9kb20v
c2V0RmlsZUlucHV0RmlsZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorIAorRmlsZSBj
b3VudDogMgorTmFtZTogZmlsZTEKK05hbWU6IGZpbGUyCitSZWNlaXZlZCBlcnJvcjogTm9kZSBp
cyBub3QgYSBmaWxlIGlucHV0IGVsZW1lbnQKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>