<?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>111133</bug_id>
          
          <creation_ts>2013-02-28 17:48:26 -0800</creation_ts>
          <short_desc>Long URLs in error messages should be shortened</short_desc>
          <delta_ts>2013-03-07 02:29:32 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Mike West">mkwst</assigned_to>
          <cc>abarth</cc>
    
    <cc>jochen</cc>
    
    <cc>mkwst</cc>
    
    <cc>pfeldman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>844667</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 17:48:26 -0800</bug_when>
    <thetext>Long URLs in error messages should be shortened

.... (10MB of data)....
XVpLTMiPjwvbGk+Ci0tPgoKIAo=&apos; because the document&apos;s frame is sandboxed and the &apos;allow-scripts&apos; permission is not set.

I&apos;m sure we have lots of these. :(  I suspect this is affecting performance of some of our data: url tests (including perf tests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844937</commentid>
    <comment_count>1</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-01 02:01:05 -0800</bug_when>
    <thetext>We&apos;re already visually shortening the messages in the console. I don&apos;t see any reason that we couldn&apos;t shorten the actual string when it&apos;s over some arbitrarily large limit. We&apos;d lose the ability to click through to see the page that generated the error, but for this specific case that&apos;s probably not a terrible loss.

1. Can you point me at a test result that&apos;s currently shockingly large?
2. What&apos;s the most performant mechanism to shorten a string? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844942</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-01 02:13:36 -0800</bug_when>
    <thetext>Oh, the log that I&apos;m seeing is not on the console, it&apos;s to stdout/stderr. :)  I see this when running DRT manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844950</commentid>
    <comment_count>3</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-01 02:21:03 -0800</bug_when>
    <thetext>Right, we don&apos;t shorten the string at all, we just look for URLs and elide them when they&apos;re over some length (~150 characters, I think). It&apos;s perfectly reasonable to do that at the string level for some higher limit (1k?). I&apos;ll throw up a patch as soon as I remember how to export methods from KURL for use in WebCore. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844954</commentid>
    <comment_count>4</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-01 02:23:12 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;ll throw up a patch as soon as I remember how to export methods from KURL for use in WebCore. :/

Scratch that. I&apos;ll upload a patch as soon as I realize that I&apos;m an idiot who can&apos;t properly read linker errors. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844958</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-01 02:28:15 -0800</bug_when>
    <thetext>I think we need to do a somewhat careful audit of all the times we&apos;re copying (see bug 111134) or converting urls to strings.  URLs can literally be megabytes in length in WebKit.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844959</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-01 02:28:35 -0800</bug_when>
    <thetext>(I&apos;m not suggesting we need to do such as part of this bug.  More just complaining in public.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844980</commentid>
    <comment_count>7</comment_count>
      <attachid>190916</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-01 02:50:12 -0800</bug_when>
    <thetext>Created attachment 190916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844987</commentid>
    <comment_count>8</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-01 02:51:29 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=190916) [details]
&gt; Patch

Feedback welcome, Eric and Pavel. If this seems like a workable approach, I&apos;ll go through the rest of the console messages that contain URLs and add them to the patch.

I&apos;m a bit worried about the substring and concat approach in terms of performance. I&apos;d appreciate alternative suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844994</commentid>
    <comment_count>9</comment_count>
      <attachid>190916</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-01 02:52:58 -0800</bug_when>
    <thetext>Comment on attachment 190916
Patch

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

&gt; Source/WebCore/bindings/ScriptControllerBase.cpp:45
&gt; +            m_frame-&gt;document()-&gt;addConsoleMessage(HTMLMessageSource, ErrorMessageLevel, &quot;Blocked script execution in &apos;&quot; + m_frame-&gt;document()-&gt;url().elidedString() + &quot;&apos; because the document&apos;s frame is sandboxed and the &apos;allow-scripts&apos; permission is not set.&quot;); 

I wonder if we should be ASSERTing in addConsoleMessage for certain error levels that we&apos;re not above a certain size threshold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844996</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-01 02:53:21 -0800</bug_when>
    <thetext>Going to leave this for abarth or pfeldman to review.  I&apos;m a bit too tired to be a good reviewer right now. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845003</commentid>
    <comment_count>11</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-01 02:56:40 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 190916 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190916&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/ScriptControllerBase.cpp:45
&gt; &gt; +            m_frame-&gt;document()-&gt;addConsoleMessage(HTMLMessageSource, ErrorMessageLevel, &quot;Blocked script execution in &apos;&quot; + m_frame-&gt;document()-&gt;url().elidedString() + &quot;&apos; because the document&apos;s frame is sandboxed and the &apos;allow-scripts&apos; permission is not set.&quot;); 
&gt; 
&gt; I wonder if we should be ASSERTing in addConsoleMessage for certain error levels that we&apos;re not above a certain size threshold.

That probably makes sense for some reasonably high amount. 10k? 100k?

Pavel will certainly have opinions here. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845005</commentid>
    <comment_count>12</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-01 02:58:35 -0800</bug_when>
    <thetext>Jochen expressed some doubt about putting this on KURL. Adding him in case his doubt grows into an r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845259</commentid>
    <comment_count>13</comment_count>
      <attachid>190916</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-01 10:00:12 -0800</bug_when>
    <thetext>Comment on attachment 190916
Patch

LGTM, but I&apos;ll give jochen and others a chance to comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845419</commentid>
    <comment_count>14</comment_count>
      <attachid>190916</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-01 12:48:06 -0800</bug_when>
    <thetext>Comment on attachment 190916
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845425</commentid>
    <comment_count>15</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-01 12:50:03 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Jochen expressed some doubt about putting this on KURL. Adding him in case his doubt grows into an r-.

I thought you were talking about a case where the inspector is passed the URL. But you&apos;re passing a string, so you&apos;ll have to do the conversion earlier, so it&apos;s ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845843</commentid>
    <comment_count>16</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-02 12:12:32 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #12)
&gt; &gt; Jochen expressed some doubt about putting this on KURL. Adding him in case his doubt grows into an r-.
&gt; 
&gt; I thought you were talking about a case where the inspector is passed the URL. But you&apos;re passing a string, so you&apos;ll have to do the conversion earlier, so it&apos;s ok

Cool. I&apos;ll add a few of the more obvious cases of copying full, potentially long URLs and land this on Monday.

We can take a closer look at the non-obvious bits in bug 111134.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845845</commentid>
    <comment_count>17</comment_count>
      <attachid>191115</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-02 12:34:32 -0800</bug_when>
    <thetext>Created attachment 191115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845846</commentid>
    <comment_count>18</comment_count>
      <attachid>191115</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-02 12:35:24 -0800</bug_when>
    <thetext>Comment on attachment 191115
Patch

Clearing r?, carrying over Jochen&apos;s r+. I&apos;ll wait until Monday to land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846226</commentid>
    <comment_count>19</comment_count>
      <attachid>191115</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 01:35:48 -0800</bug_when>
    <thetext>Comment on attachment 191115
Patch

Clearing flags on attachment: 191115

Committed r144607: &lt;http://trac.webkit.org/changeset/144607&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846227</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 01:35:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846860</commentid>
    <comment_count>21</comment_count>
      <attachid>191115</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-04 14:31:18 -0800</bug_when>
    <thetext>Comment on attachment 191115
Patch

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

&gt; Source/WebCore/ChangeLog:28
&gt; +        * platform/KURL.cpp:
&gt; +        (WebCore::KURL::elidedString): Added.
&gt; +        * platform/KURL.h:
&gt; +            An exciting new method that gives you the same result as string()
&gt; +            for URLs less than 1k long, and elides the middle of URLs longer
&gt; +            than 1k by replacing everything but the first and last 0.5k with
&gt; +            &quot;...&quot;.

The name “elided string” does not seem good for this function.

It’s nice that it’s a short name. But the string is not “elided”, only the middle of the string is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846876</commentid>
    <comment_count>22</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-04 14:46:51 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 191115 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191115&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:28
&gt; &gt; +        * platform/KURL.cpp:
&gt; &gt; +        (WebCore::KURL::elidedString): Added.
&gt; &gt; +        * platform/KURL.h:
&gt; &gt; +            An exciting new method that gives you the same result as string()
&gt; &gt; +            for URLs less than 1k long, and elides the middle of URLs longer
&gt; &gt; +            than 1k by replacing everything but the first and last 0.5k with
&gt; &gt; +            &quot;...&quot;.
&gt; 
&gt; The name “elided string” does not seem good for this function.
&gt; 
&gt; It’s nice that it’s a short name. But the string is not “elided”, only the middle of the string is.

Hrm. I thought the name fit well conceptually, but I&apos;m happy to change it for clarity.

&quot;ellipsisedString&quot;? I&apos;m not sure &quot;ellipsised&quot; is a word. :) &quot;stringTrimmedTo1k&quot;? It looks like DevTools has a &apos;trimMiddle&apos; function[1], perhaps following that convention would be reasonable?

[1]: http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/front-end/utilities.js#L117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849906</commentid>
    <comment_count>23</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-07 02:29:32 -0800</bug_when>
    <thetext>Split out renaming into https://bugs.webkit.org/show_bug.cgi?id=111700.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190916</attachid>
            <date>2013-03-01 02:50:12 -0800</date>
            <delta_ts>2013-03-02 12:34:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111133-20130301114623.patch</filename>
            <type>text/plain</type>
            <size>4097</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNhYzM0ZjdhMWQ5NTk2
Mjg3YjlkYWE2YTgwMTNiN2M0NDBkYjdmZS4uMGI1MjBhY2JkZGE2NDA5OGQ5N2ZkZmQwMWE0ODJh
MTI5ZTM1ZDkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAzLTAxICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZyBVUkxzIGluIGVycm9y
IG1lc3NhZ2VzIHNob3VsZCBiZSBzaG9ydGVuZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gZ2VuZXJhdGluZyBjb25zb2xlIG1lc3NhZ2VzLCB3
ZSdyZSBvZnRlbiBjb3B5aW5nIHRoZSBwYWdlJ3MgVVJMCisgICAgICAgIGluIG9yZGVyIHRvIGFk
ZCBkZXRhaWwgYWJvdXQgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLiBHZW5lcmFsbHksIHRoaXMK
KyAgICAgICAgaXMgZmluZSwgYnV0IGluIGVkZ2UgY2FzZXMgKG11bHRpLW1lZyAnZGF0YTonIFVS
THMpLCB3ZSdyZSB1c2luZyBmYXIKKyAgICAgICAgbW9yZSBtZW1vcnkgdGhhbiB3ZSBzaG91bGQs
IGFuZCBpbXBhY3RpbmcgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFu
ICdlbGlkZWRTdHJpbmcoKScgbWV0aG9kIHRvIEtVUkwgZm9yIHVzZSBpbiB0aGlzCisgICAgICAg
IHNvcnQgb2YgY2FzZTsgd2hlbiBnZW5lcmF0aW5nIGNvbnNvbGUgbWVzc2FnZXMsIHdlIHNob3Vs
ZCBpbnNlcnQgdGhlCisgICAgICAgIGVsaWRlZCBVUkwgcmF0aGVyIHRoYW4gdGhlIGZ1bGwgVVJM
LgorCisgICAgICAgIFRoaXMgc2hvdWxkbid0IGNoYW5nZSBhbnkgdmlzaWJsZSBiZWhhdmlvcjsg
d2UncmUgYWxyZWFkeSB2aXN1YWxseQorICAgICAgICBlbGlkaW5nIFVSTHMgaW4gY29uc29sZSBt
ZXNzYWdlcyBmb3IgVVJMcyBhYm92ZSAxNTAgY2hhcmFjdGVycy4gVGhpcworICAgICAgICBwYXRj
aCBzaW1wbHkgY2hhbmdlcyB0aGUgdW5kZXJseWluZyBzdHJpbmcgdG8gZW5zdXJlIHRoYXQgbm8g
VVJMIGlzCisgICAgICAgIG92ZXIgMWsgaW4gbGVuZ3RoIHRvIGJlZ2luIHdpdGguCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cyk6CisgICAgICAgICAgICBVc2Ug
J2VsaWRlZFN0cmluZygpJyByYXRoZXIgdGhhbiAnc3RyaW5nKCknCisgICAgICAgICogcGxhdGZv
cm0vS1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjplbGlkZWRTdHJpbmcpOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6CisgICAgICAgICAgICBBbiBleGNpdGluZyBu
ZXcgbWV0aG9kIHRoYXQgZ2l2ZXMgeW91IHRoZSBzYW1lIHJlc3VsdCBhcyBzdHJpbmcoKQorICAg
ICAgICAgICAgZm9yIFVSTHMgbGVzcyB0aGFuIDFrIGxvbmcsIGFuZCBlbGlkZXMgdGhlIG1pZGRs
ZSBvZiBVUkxzIGxvbmdlcgorICAgICAgICAgICAgdGhhbiAxayBieSByZXBsYWNpbmcgZXZlcnl0
aGluZyBidXQgdGhlIGZpcnN0IGFuZCBsYXN0IDAuNWsgd2l0aAorICAgICAgICAgICAgIi4uLiIu
CisKIDIwMTMtMDItMjggIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIGNhbGVuZGFyIHRhYmxlIHZpZXcgZm9yIHRoZSBuZXcgY2FsZW5kYXIgcGlja2Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAK
aW5kZXggZWZlNDg1MTc3YjMxZmQxMWUxNjMwMzEyMDRmMTczMDhhNGZjOWFiMy4uNTM1MTM1ODc2
OWVmZGNkM2Q1ZDljZGY1NDYxNTExNDBlY2ZkMDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBib29s
IFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5F
eGVjdXRlU2NyaXB0cyByZWFzbwogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIG1fZnJh
bWUtPmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSkgewogICAgICAgICAv
LyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYgdGhlIGNvbnNvbGUgb25j
ZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDMyNzQgZXhpc3RzLgogICAgICAgICBpZiAocmVhc29uID09IEFib3V0VG9FeGVjdXRlU2NyaXB0
KQotICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSFRN
TE1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiQmxvY2tlZCBzY3JpcHQgZXhlY3V0
aW9uIGluICciICsgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkgKyAiJyBiZWNh
dXNlIHRoZSBkb2N1bWVudCdzIGZyYW1lIGlzIHNhbmRib3hlZCBhbmQgdGhlICdhbGxvdy1zY3Jp
cHRzJyBwZXJtaXNzaW9uIGlzIG5vdCBzZXQuIik7IAorICAgICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiQmxvY2tlZCBzY3JpcHQgZXhlY3V0aW9uIGluICciICsgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuZWxpZGVkU3RyaW5nKCkgKyAiJyBiZWNhdXNlIHRoZSBkb2N1bWVudCdzIGZy
YW1lIGlzIHNhbmRib3hlZCBhbmQgdGhlICdhbGxvdy1zY3JpcHRzJyBwZXJtaXNzaW9uIGlzIG5v
dCBzZXQuIik7IAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkwuY3BwCmluZGV4IDI4YjcxMTA5ZTk3ZjFiYjVkODgyMjNlNTNmMWNjMDllZmNjNmU4NjIu
LmI1ZmJjOGNkZWE3ZTE2ODQwY2M3ZjA0NjJmZmJjYmFlZGQyZDQ5ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tVUkwuY3BwCkBAIC0xOTI1LDQgKzE5MjUsMTIgQEAgYm9vbCBLVVJMOjppc1NhZmVUb1Nl
bmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAogI2VuZGlmCiB9CiAKK1N0cmluZyBLVVJMOjplbGlk
ZWRTdHJpbmcoKSBjb25zdAoreworICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSAxMDI0KQor
ICAgICAgICByZXR1cm4gc3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RyaW5nKCkubGVmdCg1MTEp
ICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodCg1MTApOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmgKaW5kZXggYmE0MDliMWFjYjlkMTYwMzFiNDRlYmJiMjE1ODJmYWNhYmQ4M2UxMC4uOGVhOWEy
NGQ2MTU5NjczYWY0MTMyODc4NTYzMzk1ODQyN2FkNDQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwu
aApAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAorICAgIFN0cmluZyBlbGlkZWRT
dHJpbmcoKSBjb25zdDsKKwogICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OwogICAgIFN0cmlu
ZyBob3N0KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgc2hvcnQgcG9ydCgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191115</attachid>
            <date>2013-03-02 12:34:32 -0800</date>
            <delta_ts>2013-03-04 14:31:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111133-20130302213034.patch</filename>
            <type>text/plain</type>
            <size>29370</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE4NTA0MTE5ODI1ZjA3
YWQxYWQ2YmIxNDU1ZDQ1ZGJjMjAzYjE5ZS4uYmVlMzRjYTYwMTUwZjBlNDM3NjM5NTNiNjQwYjhi
ZWE0YTJjNzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAzLTAyICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZyBVUkxzIGluIGVycm9y
IG1lc3NhZ2VzIHNob3VsZCBiZSBzaG9ydGVuZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IEpvY2hl
biBFaXNpbmdlci4KKworICAgICAgICBXaGVuIGdlbmVyYXRpbmcgY29uc29sZSBtZXNzYWdlcywg
d2UncmUgb2Z0ZW4gY29weWluZyB0aGUgcGFnZSdzIFVSTAorICAgICAgICBpbiBvcmRlciB0byBh
ZGQgZGV0YWlsIGFib3V0IHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4gR2VuZXJhbGx5LCB0aGlz
CisgICAgICAgIGlzIGZpbmUsIGJ1dCBpbiBlZGdlIGNhc2VzIChtdWx0aS1tZWcgJ2RhdGE6JyBV
UkxzKSwgd2UncmUgdXNpbmcgZmFyCisgICAgICAgIG1vcmUgbWVtb3J5IHRoYW4gd2Ugc2hvdWxk
LCBhbmQgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBh
biAnZWxpZGVkU3RyaW5nKCknIG1ldGhvZCB0byBLVVJMIGZvciB1c2UgaW4gdGhpcworICAgICAg
ICBzb3J0IG9mIGNhc2U7IHdoZW4gZ2VuZXJhdGluZyBjb25zb2xlIG1lc3NhZ2VzLCB3ZSBzaG91
bGQgaW5zZXJ0IHRoZQorICAgICAgICBlbGlkZWQgVVJMIHJhdGhlciB0aGFuIHRoZSBmdWxsIFVS
TC4KKworICAgICAgICBUaGlzIHNob3VsZG4ndCBjaGFuZ2UgYW55IHZpc2libGUgYmVoYXZpb3I7
IHdlJ3JlIGFscmVhZHkgdmlzdWFsbHkKKyAgICAgICAgZWxpZGluZyBVUkxzIGluIGNvbnNvbGUg
bWVzc2FnZXMgZm9yIFVSTHMgYWJvdmUgMTUwIGNoYXJhY3RlcnMuIFRoaXMKKyAgICAgICAgcGF0
Y2ggc2ltcGx5IGNoYW5nZXMgdGhlIHVuZGVybHlpbmcgc3RyaW5nIHRvIGVuc3VyZSB0aGF0IG5v
IFVSTCBpcworICAgICAgICBvdmVyIDFrIGluIGxlbmd0aCB0byBiZWdpbiB3aXRoLgorCisgICAg
ICAgICogcGxhdGZvcm0vS1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjplbGlkZWRT
dHJpbmcpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6CisgICAgICAgICAgICBB
biBleGNpdGluZyBuZXcgbWV0aG9kIHRoYXQgZ2l2ZXMgeW91IHRoZSBzYW1lIHJlc3VsdCBhcyBz
dHJpbmcoKQorICAgICAgICAgICAgZm9yIFVSTHMgbGVzcyB0aGFuIDFrIGxvbmcsIGFuZCBlbGlk
ZXMgdGhlIG1pZGRsZSBvZiBVUkxzIGxvbmdlcgorICAgICAgICAgICAgdGhhbiAxayBieSByZXBs
YWNpbmcgZXZlcnl0aGluZyBidXQgdGhlIGZpcnN0IGFuZCBsYXN0IDAuNWsgd2l0aAorICAgICAg
ICAgICAgIi4uLiIuCisgICAgICAgICogYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6c2VuZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpmYWlsKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRDb250cm9sbGVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjYW5FeGVjdXRlU2NyaXB0cyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKiBk
b20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpl
eGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1
Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQcm92
aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5k
b3cpOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKToKKyAgICAgICAg
KiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1BE
aXJlY3RpdmVMaXN0OjpjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdE5vbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2luVHlwZSk6CisgICAgICAgICAgICBV
c2UgJ0tVUkw6OmVsaWRlZFN0cmluZygpJyByYXRoZXIgdGhhbiAnS1VSTDo6c3RyaW5nKCknCisg
ICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6bG9nV2FybmluZyk6CisgICAgICAgICAgICBIZXJlLCB3
ZSdyZSBkb2luZyB0aGUgc2FtZSBhcyBhYm92ZSwgYnV0IGl0IGVuYWJsZXMgdXMgdG8gdGhyb3cK
KyAgICAgICAgICAgIGF3YXkgdGhlIGFzVVRGOCgpIGZ1bmN0aW9uIGVudGlyZWx5IGJ5IHN3aXRj
aGluZyB0byBtYWtlU3RyaW5nCisgICAgICAgICAgICByYXRoZXIgdGhhbiBTdHJpbmc6OmZvcm1h
dC4KKwogMjAxMy0wMy0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggYSB0eXBvIGluIG15IHByZXZpb3VzIGNvbW1pdCAocjE0NDUzNCkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDU4OWMw
NTY4NmM0YWVhOTk3MWYzY2ZjOWEyMGY1YzNkZjRlOGM4YjIuLjE2NTQ1YTQxMTI5NmJjN2UyZjU2
ODJjZGMxZTc2MTZiZjg2NTM2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0yMTUsMjAgKzIxNSwyMCBAQCB2b2lkIFdlYlNvY2tl
dDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3Rv
Y29scywgRXhjZQogICAgIG1fdXJsID0gS1VSTChLVVJMKCksIHVybCk7CiAKICAgICBpZiAoIW1f
dXJsLmlzVmFsaWQoKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENv
bnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJJbnZhbGlk
IHVybCBmb3IgV2ViU29ja2V0ICIgKyBtX3VybC5zdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgIkludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgIiArIG1fdXJsLmVsaWRl
ZFN0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX3VybC5wcm90b2Nv
bElzKCJ3cyIpICYmICFtX3VybC5wcm90b2NvbElzKCJ3c3MiKSkgewotICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsICJXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgIiArIG1fdXJs
LnN0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xl
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiV3JvbmcgdXJsIHNj
aGVtZSBmb3IgV2ViU29ja2V0ICIgKyBtX3VybC5lbGlkZWRTdHJpbmcoKSk7CiAgICAgICAgIG1f
c3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAobV91cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpIHsKLSAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiVVJMIGhhcyBmcmFnbWVudCBjb21wb25lbnQgIiAr
IG1fdXJsLnN0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRD
b25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiVVJMIGhh
cyBmcmFnbWVudCBjb21wb25lbnQgIiArIG1fdXJsLmVsaWRlZFN0cmluZygpKTsKICAgICAgICAg
bV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1
cm47CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXJW
aWV3KiBhcnJheUJ1ZmZlclZpZXcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBib29sIFdlYlNvY2tl
dDo6c2VuZChCbG9iKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kIGJsb2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dCAlcCBzZW5kIGJsb2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLT51cmwoKS5lbGlkZWRTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoYmluYXJ5RGF0YSk7CiAgICAgaWYgKG1fc3Rh
dGUgPT0gQ09OTkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCmluZGV4IGNjZDYwZTc5YjNiMTBhYTMzZWI5MWQ0Yzk2ZDU0MzI3MDNmYjcxZmQuLjJj
MTQwYjFlMjRlNDkzMzUwYWEwZjYyODExNGNjMDE3NTk5NjE1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAg
LTE1OCw3ICsxNTgsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJgogCiBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEJs
b2ImIGJpbmFyeURhdGEpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IHNlbmQgYmxvYiAlcyIsIHRoaXMsIGJpbmFyeURhdGEudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgYmxvYiAl
cyIsIHRoaXMsIGJpbmFyeURhdGEudXJsKCkuZWxpZGVkU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBiaW5h
cnlEYXRhKTsKICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNj
ZXNzOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChj
b25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBpZiAo
bV9kb2N1bWVudCkgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVXZWJTb2NrZXRGcmFtZUVycm9yKG1fZG9jdW1lbnQsIG1faWRlbnRpZmllciwgcmVhc29uKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgIldlYlNvY2tldCBjb25uZWN0aW9uIHRvICciICsgbV9oYW5kc2hh
a2UtPnVybCgpLnN0cmluZygpICsgIicgZmFpbGVkOiAiICsgcmVhc29uKTsKKyAgICAgICAgbV9k
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIldlYlNvY2tldCBjb25uZWN0aW9uIHRvICciICsgbV9oYW5kc2hha2UtPnVybCgpLmVs
aWRlZFN0cmluZygpICsgIicgZmFpbGVkOiAiICsgcmVhc29uKTsKICAgICB9CiAKICAgICAvLyBI
eWJpLTEwIHNwZWNpZmljYXRpb24gZXhwbGljaXRseSBzdGF0ZXMgd2UgbXVzdCBub3QgY29udGlu
dWUgdG8gaGFuZGxlIGluY29taW5nIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAppbmRleCBlZmU0ODUxNzdiMzFmZDExZTE2MzAzMTIw
NGYxNzMwOGE0ZmM5YWIzLi41MzUxMzU4NzY5ZWZkY2QzZDVkOWNkZjU0NjE1MTE0MGVjZmQwNDQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2Uu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNj
cmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJlYXNvCiAgICAgaWYgKG1f
ZnJhbWUtPmRvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2Fu
ZGJveFNjcmlwdHMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJl
IG1vdmVkIG9mZiB0aGUgY29uc29sZSBvbmNlIGEgc29sdXRpb24gdG8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzI3NCBleGlzdHMuCiAgICAgICAgIGlmIChyZWFz
b24gPT0gQWJvdXRUb0V4ZWN1dGVTY3JpcHQpCi0gICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5hZGRDb25zb2xlTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJCbG9ja2VkIHNjcmlwdCBleGVjdXRpb24gaW4gJyIgKyBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSArICInIGJlY2F1c2UgdGhlIGRvY3VtZW50J3MgZnJhbWUgaXMgc2Fu
ZGJveGVkIGFuZCB0aGUgJ2FsbG93LXNjcmlwdHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsg
CisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShIVE1M
TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJCbG9ja2VkIHNjcmlwdCBleGVjdXRp
b24gaW4gJyIgKyBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5lbGlkZWRTdHJpbmcoKSArICIn
IGJlY2F1c2UgdGhlIGRvY3VtZW50J3MgZnJhbWUgaXMgc2FuZGJveGVkIGFuZCB0aGUgJ2FsbG93
LXNjcmlwdHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsgCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI4MzViZDAxZTc3NTUyNGEy
YmRjYTJiODI3NWYyMmUxMmUwODI2MGUuLjliYzYxMGNmMzA3MzNkZDhiZmYwMzU1NWZkOTZiYmMy
YmRiNDg3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjg5Myw3ICsyODkzLDcgQEAg
dm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgICAgICAgICBpZiAoZnJhbWVMb2FkZXItPmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCkgJiYgZnJhbWVMb2FkZXItPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1h
aW5SZXNvdXJjZUxvYWRlcigpKQogICAgICAgICAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyID0g
ZnJhbWVMb2FkZXItPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigp
LT5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBpZiAoZnJhbWVMb2FkZXItPnNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRlbnQsIHVybCgpLCByZXF1ZXN0SWRlbnRpZmll
cikpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGRpc3Bs
YXkgJyIgKyB1cmwoKS5zdHJpbmcoKSArICInIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gt
RnJhbWUtT3B0aW9ucycgdG8gJyIgKyBjb250ZW50ICsgIicuIjsKKyAgICAgICAgICAgICAgICBT
dHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIgKyB1cmwoKS5lbGlkZWRTdHJp
bmcoKSArICInIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8g
JyIgKyBjb250ZW50ICsgIicuIjsKICAgICAgICAgICAgICAgICBmcmFtZUxvYWRlci0+c3RvcEFs
bExvYWRlcnMoKTsKICAgICAgICAgICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigp
LT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHNlY3VyaXR5T3JpZ2luKCksIGJsYW5rVVJMKCksIFN0
cmluZygpKTsKICAgICAgICAgICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYTZlMjUwYmM0YzAwM2JhNjFkZDAzMmU0
MWE4YjBmNGZlYzJiYTc5MC4uZmRiZTNmYzU4N2MzMmNiNTk0ODc2MTJmMDYzZWI3NDE4OTVhZjg1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMjk2LDcgKzI5Niw3IEBA
IHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlKQogCiAjaWYgRU5BQkxFKE5PU05JRkYpCiAgICAgaWYgKG1faXNFeHRlcm5h
bFNjcmlwdCAmJiBtX2NhY2hlZFNjcmlwdCAmJiAhbV9jYWNoZWRTY3JpcHQtPm1pbWVUeXBlQWxs
b3dlZEJ5Tm9zbmlmZigpKSB7Ci0gICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlJlZnVzZWQg
dG8gZXhlY3V0ZSBzY3JpcHQgZnJvbSAnIiArIG1fY2FjaGVkU2NyaXB0LT51cmwoKS5zdHJpbmco
KSArICInIGJlY2F1c2UgaXRzIE1JTUUgdHlwZSAoJyIgKyBtX2NhY2hlZFNjcmlwdC0+bWltZVR5
cGUoKSArICInKSBpcyBub3QgZXhlY3V0YWJsZSwgYW5kIHN0cmljdCBNSU1FIHR5cGUgY2hlY2tp
bmcgaXMgZW5hYmxlZC4iKTsKKyAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiUmVmdXNlZCB0
byBleGVjdXRlIHNjcmlwdCBmcm9tICciICsgbV9jYWNoZWRTY3JpcHQtPnVybCgpLmVsaWRlZFN0
cmluZygpICsgIicgYmVjYXVzZSBpdHMgTUlNRSB0eXBlICgnIiArIG1fY2FjaGVkU2NyaXB0LT5t
aW1lVHlwZSgpICsgIicpIGlzIG5vdCBleGVjdXRhYmxlLCBhbmQgc3RyaWN0IE1JTUUgdHlwZSBj
aGVja2luZyBpcyBlbmFibGVkLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzcyNzA1MTIxNjIw
ZjA3ZGRiMjEzMmIwYTZhYWI3ZWFlZWE5ZmJiLi4xZTg5ZGZjMmVmMDliOTg2NGYyNTI3MGU4Y2Q2
MGI3MzE2NTQ4OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTcwMiw3ICs3MDIsNyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIAotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNh
blBsYXlUeXBlKCVzLCAlcywgJXMpIC0+ICVzIiwgbWltZVR5cGUudXRmOCgpLmRhdGEoKSwga2V5
U3lzdGVtLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBjYW5QbGF5
LnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBs
YXlUeXBlKCVzLCAlcywgJXMpIC0+ICVzIiwgbWltZVR5cGUudXRmOCgpLmRhdGEoKSwga2V5U3lz
dGVtLnV0ZjgoKS5kYXRhKCksIHVybC5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBjYW5Q
bGF5LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIGNhblBsYXk7CiB9CkBAIC0xNDYzLDcg
KzE0NjMsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBL
VVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSQogICAgIEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIGlmIChhY3Rpb25JZkludmFs
aWQgPT0gQ29tcGxhaW4pCi0gICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2Fk
RmFpbGVkKGZyYW1lLCB1cmwuc3RyaW5nKCkpOworICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJl
cG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJsLmVsaWRlZFN0cmluZygpKTsKICAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKCVzKSAtPiBGQUxT
RSByZWplY3RlZCBieSBTZWN1cml0eU9yaWdpbiIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMWU1ODI5NGM4YmY5MGIxMjY5YmRiOWI4ZDdkNzFl
OTgzZTY0ZmNmYi4uMjIzYzRkMmVhODdjOTk1ZWUxNjcyZTY5ZDgyN2VmZmNiMzJhNTNjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBzdWJt
aXNzaW9uKQogCiAgICAgaWYgKGlzRG9jdW1lbnRTYW5kYm94ZWQobV9mcmFtZSwgU2FuZGJveEZv
cm1zKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBv
ZmYgdGhlIGNvbnNvbGUgb25jZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDMyNzQgZXhpc3RzLgotICAgICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5hZGRDb25zb2xlTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJCbG9ja2VkIGZvcm0gc3VibWlzc2lvbiB0byAnIiArIHN1Ym1pc3Npb24tPmFjdGlvbigp
LnN0cmluZygpICsgIicgYmVjYXVzZSB0aGUgZm9ybSdzIGZyYW1lIGlzIHNhbmRib3hlZCBhbmQg
dGhlICdhbGxvdy1mb3JtcycgcGVybWlzc2lvbiBpcyBub3Qgc2V0LiIpOworICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsICJCbG9ja2VkIGZvcm0gc3VibWlzc2lvbiB0byAnIiArIHN1Ym1pc3Np
b24tPmFjdGlvbigpLmVsaWRlZFN0cmluZygpICsgIicgYmVjYXVzZSB0aGUgZm9ybSdzIGZyYW1l
IGlzIHNhbmRib3hlZCBhbmQgdGhlICdhbGxvdy1mb3JtcycgcGVybWlzc2lvbiBpcyBub3Qgc2V0
LiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTQyLDcgKzExNDIsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgbG9ja0hpcwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwog
ICAgIGlmICghcmVxdWVzdC5yZXF1ZXN0ZXIoKS0+Y2FuRGlzcGxheSh1cmwpKSB7Ci0gICAgICAg
IHJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLCB1cmwuc3RyaW5nKCkpOworICAgICAgICBy
ZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgdXJsLmVsaWRlZFN0cmluZygpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTY4Miw4ICsxNjgyLDggQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QobV9m
cmFtZSk7CiAKICAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEFib3V0IHRv
IGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJMICclcycgdG8gbmV3IFVS
TCAnJXMnIiwgbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiIiwgCi0gICAgICAgIHBkbCA/IHBkbC0+
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICI8bm8gcHJvdmlzaW9uYWwgRG9jdW1lbnRM
b2FkZXI+Iik7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkgPyBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIiIsCisgICAgICAgIHBk
bCA/IHBkbC0+dXJsKCkuZWxpZGVkU3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICI8bm8gcHJvdmlz
aW9uYWwgRG9jdW1lbnRMb2FkZXI+Iik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgbmVl
ZCB0byBjYWNoZSB0aGUgcGFnZSB3ZSBhcmUgbmF2aWdhdGluZyBhd2F5IGZyb20gaW50byB0aGUg
YmFjay9mb3J3YXJkIGNhY2hlLgogICAgIC8vIFdlIGFyZSBkb2luZyB0aGlzIGhlcmUgYmVjYXVz
ZSB3ZSBrbm93IGZvciBzdXJlIHRoYXQgYSBuZXcgcGFnZSBpcyBhYm91dCB0byBiZSBsb2FkZWQu
CkBAIC0xNzM0LDcgKzE3MzQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25h
bExvYWQoKQogICAgIH0KIAogICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEZp
bmlzaGVkIGNvbW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMiLCBtX2ZyYW1lLT50
cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAotICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSA6ICIiKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CiAK
ICAgICBpZiAobV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlU3RhbmRhcmQgJiYgbV9kb2N1bWVu
dExvYWRlci0+aXNDbGllbnRSZWRpcmVjdCgpKQogICAgICAgICBoaXN0b3J5KCktPnVwZGF0ZUZv
ckNsaWVudFJlZGlyZWN0KCk7CkBAIC0yOTM3LDcgKzI5MzcsNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGNvbgogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQodG9wRnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfSBlbHNlIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UoY29udGVudCwgImFsbG93YWxs
IikpIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiSW52YWxpZCAnWC1GcmFtZS1PcHRpb25z
JyBoZWFkZXIgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZygpICsgIic6
ICciICsgY29udGVudCArICInIGlzIG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0aXZlLiBUaGUgaGVh
ZGVyIHdpbGwgYmUgaWdub3JlZC4iOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJJbnZhbGlk
ICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1
cmwuZWxpZGVkU3RyaW5nKCkgKyAiJzogJyIgKyBjb250ZW50ICsgIicgaXMgbm90IGEgcmVjb2du
aXplZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBpZ25vcmVkLiI7CiAgICAgICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CiAKQEAg
LTI5NDcsNyArMjk0Nyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uCiB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogewogICAgIERvY3VtZW50
TG9hZGVyKiBwcm92aXNpb25hbExvYWRlciA9IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKTsK
LSAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZVBhZ2VDYWNoZTogTG9hZGluZyBwcm92aXNpb25h
bCBEb2N1bWVudExvYWRlciAlcCB3aXRoIFVSTCAnJXMnIGZyb20gQ2FjaGVkUGFnZSIsIHByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIoKSwgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZVBh
Z2VDYWNoZTogTG9hZGluZyBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlciAlcCB3aXRoIFVSTCAn
JXMnIGZyb20gQ2FjaGVkUGFnZSIsIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSwgcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIAogICAgIHByZXBhcmVGb3JMb2FkU3RhcnQoKTsKIApAQCAtMzM0Miw3ICszMzQyLDcgQEAg
RnJhbWUqIGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUsIEZyYW1lKiBsb29rdXBGcmFt
ZSwgY29uc3QgRnJhbWVMb2FkUmVxdWUKICAgICAvLyBTYW5kYm94ZWQgZnJhbWVzIGNhbm5vdCBv
cGVuIG5ldyBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dHMuCiAgICAgaWYgKGlzRG9jdW1lbnRT
YW5kYm94ZWQob3BlbmVyRnJhbWUsIFNhbmRib3hQb3B1cHMpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIG1vdmVkIG9mZiB0aGUgY29uc29sZSBvbmNlIGEgc29s
dXRpb24gdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzI3NCBl
eGlzdHMuCi0gICAgICAgIG9wZW5lckZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShIVE1MTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJCbG9ja2VkIG9wZW5pbmcg
JyIgKyByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpICsgIicgaW4gYSBu
ZXcgd2luZG93IGJlY2F1c2UgdGhlIHJlcXVlc3Qgd2FzIG1hZGUgaW4gYSBzYW5kYm94ZWQgZnJh
bWUgd2hvc2UgJ2FsbG93LXBvcHVwcycgcGVybWlzc2lvbiBpcyBub3Qgc2V0LiIpOworICAgICAg
ICBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSFRNTE1lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiQmxvY2tlZCBvcGVuaW5nICciICsgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5lbGlkZWRTdHJpbmcoKSArICInIGluIGEgbmV3IHdpbmRv
dyBiZWNhdXNlIHRoZSByZXF1ZXN0IHdhcyBtYWRlIGluIGEgc2FuZGJveGVkIGZyYW1lIHdob3Nl
ICdhbGxvdy1wb3B1cHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDgxMDU3MmY3OTc0ZDVmYWQzYjEzODgxNjE1OTkwM2ExODY0MzkyNDAuLjg5NmQw
NjBlMWYyMGJiZThhNzAxMTkzMjc0NmMxZDlhMzgzYmFlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBN
YWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1Jl
cXVlc3QsIGNvbnN0IFJlc28KICAgICAgICAgLy8gdGhlbiBibG9jayB0aGUgcmVkaXJlY3QuCiAg
ICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVkaXJlY3RpbmdPcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpOwogICAgICAgICBpZiAoIXJl
ZGlyZWN0aW5nT3JpZ2luLT5jYW5EaXNwbGF5KG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAg
ICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZG9jdW1lbnRMb2FkZXIt
PmZyYW1lKCksIG5ld1JlcXVlc3QudXJsKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgRnJhbWVM
b2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBu
ZXdSZXF1ZXN0LnVybCgpLmVsaWRlZFN0cmluZygpKTsKICAgICAgICAgICAgIGNhbmNlbCgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBN
YWluUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlLCBjb25zdCBSZXNvdXIKICAgICAgICAgU3RyaW5nIGNvbnRlbnQgPSBpdC0+dmFsdWU7CiAg
ICAgICAgIGlmIChmcmFtZUxvYWRlcigpLT5zaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0
aW9ucyhjb250ZW50LCByLnVybCgpLCBpZGVudGlmaWVyKCkpKSB7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKG1f
ZG9jdW1lbnRMb2FkZXItPmZyYW1lKCksIGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwg
cik7Ci0gICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIg
KyByLnVybCgpLnN0cmluZygpICsgIicgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFt
ZS1PcHRpb25zJyB0byAnIiArIGNvbnRlbnQgKyAiJy4iOworICAgICAgICAgICAgU3RyaW5nIG1l
c3NhZ2UgPSAiUmVmdXNlZCB0byBkaXNwbGF5ICciICsgci51cmwoKS5lbGlkZWRTdHJpbmcoKSAr
ICInIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBj
b250ZW50ICsgIicuIjsKICAgICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRv
Y3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSk7CiAKICAgICAgICAgICAgIGNhbmNlbCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCmluZGV4IDVj
NTJjNDk0Y2VkMDgwYjY0MzUzNWFkNDk0NDEzZDJjNDJkMDdmYjcuLjQ3NTE0MTJkNDg1NDA5ZGIz
NTNjNjc2ODIxM2I1YWI0NGFjZTkxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4
ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTUzLDExICs1Myw2IEBAIEZyYW1lTG9hZGVyQ2xpZW50
KiBNaXhlZENvbnRlbnRDaGVja2VyOjpjbGllbnQoKSBjb25zdAogICAgIHJldHVybiBtX2ZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ1N0cmluZyBhc1VURjgo
Y29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiB1cmwuc3RyaW5nKCkudXRmOCgpOwotfQot
CiAvLyBzdGF0aWMKIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhlZENvbnRlbnQoU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBLVVJMJiB1cmwpCiB7CkBAIC0xMDAs
OSArOTUsNyBAQCBib29sIE1peGVkQ29udGVudENoZWNrZXI6OmNhblJ1bkluc2VjdXJlQ29udGVu
dChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sCiAKIHZvaWQgTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6bG9nV2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25z
dCBLVVJMJiB0YXJnZXQpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdoeSBkb2VzIHRoaXMgbWVz
c2FnZSBub3QgaGF2ZSBhIHNvdXJjZSBVUkwgb3IgYSBsaW5lIG51bWJlcj8gd2Via2l0Lm9yZy9i
Lzk3OTc5Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiJXNUaGUgcGFnZSBh
dCAlcyAlcyBpbnNlY3VyZSBjb250ZW50IGZyb20gJXMuXG4iLAotICAgICAgICAoYWxsb3dlZCA/
ICIiIDogIltibG9ja2VkXSAiKSwgYXNVVEY4KG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKS5k
YXRhKCksIGFjdGlvbi51dGY4KCkuZGF0YSgpLCBhc1VURjgodGFyZ2V0KS5kYXRhKCkpOworICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dlZCA/ICIiIDogIltibG9ja2VkXSAi
KSwgIlRoZSBwYWdlIGF0ICIsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLmVsaWRlZFN0cmlu
ZygpLCAiICIsIGFjdGlvbiwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LmVsaWRl
ZFN0cmluZygpLCAiLlxuIik7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDE4NGVmMjI2MzIyZjE5YzY4MjdkNTFmYmQzNzZmNTEx
NDY0YjEzYjAuLmY2YTdkMjQzZTgwZmY3NjAxMWEyNTg5ZDRjY2YyY2FmMTQxOWI2YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXMK
IAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIgfHwgcmVzcG9u
c2UudXJsKCkgIT0gbV9jdXJyZW50SGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSkgewogICAg
ICAgICBpZiAoKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkV4cGxpY2l0KSB8fCAo
dHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFsbGJhY2spKSB7Ci0gICAgICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3Vy
Y2UsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwg
YmVjYXVzZSAiICsgbV9jdXJyZW50SGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KSArIAorICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
T3RoZXJNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hl
IHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkudXJsKCkuZWxpZGVkU3RyaW5nKCkgKwogICAgICAgICAgICAgICAgICgocmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyKSA/ICIgY291bGQgbm90IGJlIGZldGNoZWQuIiA6ICIg
d2FzIHJlZGlyZWN0ZWQuIikpOwogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGNhY2hlVXBkYXRl
RmFpbGVkKCkgY2FuIGNhdXNlIHRoZSBjYWNoZSBncm91cCB0byBiZSBkZWxldGVkLgogICAgICAg
ICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBS
ZXNvdXJjZUVycm9yJgogICAgIG1fcGVuZGluZ0VudHJpZXMucmVtb3ZlKHVybCk7CiAKICAgICBp
ZiAoKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkV4cGxpY2l0KSB8fCAodHlwZSAm
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFsbGJhY2spKSB7Ci0gICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIg
KyB1cmwuc3RyaW5nKCkgKyAiIGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIpOworICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVz
ZSAiICsgdXJsLmVsaWRlZFN0cmluZygpICsgIiBjb3VsZCBub3QgYmUgZmV0Y2hlZC4iKTsKICAg
ICAgICAgLy8gTm90ZSB0aGF0IGNhY2hlVXBkYXRlRmFpbGVkKCkgY2FuIGNhdXNlIHRoZSBjYWNo
ZSBncm91cCB0byBiZSBkZWxldGVkLgogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAppbmRleCBkYzcyZTQ4ZTBmNWQxMzJlZTBkZDI2YTM0YTMzM2Q0YWIw
ODY1YWRhLi4zNTYwZTkyMjgwZWRiNzhjMjhmNzQ1MjAzMGI3MTdjZjQ1Y2NiNzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1
ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogewogICAgIGlm
IChkb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5
KHVybCkpIHsKICAgICAgICAgaWYgKCFmb3JQcmVsb2FkKQotICAgICAgICAgICAgRnJhbWVMb2Fk
ZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nKCkpOworICAgICAg
ICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuZWxp
ZGVkU3RyaW5nKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5
T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQyNCw3
ICs0MjQsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogewogICAgIEtVUkwgdXJsID0gcmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAKLSAgICBMT0coUmVzb3VyY2VMb2Fk
aW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSAnJXMnLCBjaGFyc2V0
ICclcycsIHByaW9yaXR5PSVkLCBmb3JQcmVsb2FkPSV1IiwgdXJsLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSwgcmVxdWVzdC5jaGFyc2V0KCkubGF0aW4xKCkuZGF0YSgpLCByZXF1ZXN0LnByaW9y
aXR5KCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpKTsKKyAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSAnJXMnLCBjaGFyc2V0ICclcycs
IHByaW9yaXR5PSVkLCBmb3JQcmVsb2FkPSV1IiwgdXJsLmVsaWRlZFN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSwgcmVxdWVzdC5jaGFyc2V0KCkubGF0aW4xKCkuZGF0YSgpLCByZXF1ZXN0LnByaW9y
aXR5KCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpKTsKICAgICAKICAgICAvLyBJZiBvbmx5IHRoZSBm
cmFnbWVudCBpZGVudGlmaWVycyBkaWZmZXIsIGl0IGlzIHRoZSBzYW1lIHJlc291cmNlLgogICAg
IHVybCA9IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZCh1cmwp
OwpAQCAtNTQxLDcgKzU0MSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJlCiB7CiAgICAgQVNT
RVJUKCFtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKSkpOwogCi0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIkxvYWRpbmcgQ2FjaGVkUmVz
b3VyY2UgZm9yICclcycuIiwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOworICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJMb2FkaW5nIENh
Y2hlZFJlc291cmNlIGZvciAnJXMnLiIsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCku
ZWxpZGVkU3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVl
c3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBjaGFyc2V0KTsKIApAQCAtNjU4LDkgKzY1OCw5
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShj
b25zdCBLVVJMJiB1cmwpIGNvbnN0CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpZiAoIW1f
ZG9jdW1lbnQgfHwgbV9kb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCi0gICAgICAgIG1lc3NhZ2Ug
PSAiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiArIHVybC5zdHJpbmcoKSArICcuJzsKKyAg
ICAgICAgbWVzc2FnZSA9ICJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLmVsaWRl
ZFN0cmluZygpICsgJy4nOwogICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9ICJVbnNhZmUgYXR0
ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLnN0cmluZygpICsgIiBmcm9tIGZyYW1lIHdpdGggVVJM
ICIgKyBtX2RvY3VtZW50LT51cmwoKS5zdHJpbmcoKSArICIuIERvbWFpbnMsIHByb3RvY29scyBh
bmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7CisgICAgICAgIG1lc3NhZ2UgPSAiVW5zYWZlIGF0dGVt
cHQgdG8gbG9hZCBVUkwgIiArIHVybC5lbGlkZWRTdHJpbmcoKSArICIgZnJvbSBmcmFtZSB3aXRo
IFVSTCAiICsgbV9kb2N1bWVudC0+dXJsKCkuZWxpZGVkU3RyaW5nKCkgKyAiLiBEb21haW5zLCBw
cm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guXG4iOwogCiAgICAgZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKaW5kZXggYzQ3ZmM2YzgxZDM0NzUzY2FmNGM1NmQ1NGUyYjkwYThhOGNiODU3
YS4uN2I0NzQ3Zjc0NjEzZThjMTYwMmM3MTUwYzhjYWZkYTlkNjZiMzFkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMTA0NCw3ICsxMDQ0
LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlv
bihTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3QKICAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVm
YXVsdFNyYykKICAgICAgICAgc3VmZml4ID0gIiBOb3RlIHRoYXQgJyIgKyB0eXBlICsgIi1zcmMn
IHdhcyBub3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0LXNyYycgaXMgdXNlZCBhcyBhIGZh
bGxiYWNrLiI7CiAKLSAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHByZWZp
eCArIHVybC5zdHJpbmcoKSArICInIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBD
b250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6IFwiIiArIGRpcmVjdGl2ZS0+dGV4dCgp
ICsgIlwiLiIgKyBzdWZmaXggKyAiXG4iLCB1cmwpOworICAgIHJlcG9ydFZpb2xhdGlvbihkaXJl
Y3RpdmUtPnRleHQoKSwgcHJlZml4ICsgdXJsLmVsaWRlZFN0cmluZygpICsgIicgYmVjYXVzZSBp
dCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIHVybCk7
CiAgICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOwogfQogCkBAIC0xMTAxLDEzICsx
MTAxLDEzIEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZShjb25zdCBT
dHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlCiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1
dGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjaGVja05vbmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0
KCksIG5vbmNlLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwotICAg
IHJldHVybiBjaGVja05vbmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCks
IG5vbmNlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLnN0cmluZygpICsgIicgYmVjYXVzZSBp
dCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogIiwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOworICAgIHJldHVybiBjaGVja05vbmNlQW5k
UmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCAiUmVmdXNlZCB0byBs
b2FkICciICsgdXJsLmVsaWRlZFN0cmluZygpICsgIicgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIiwgY29udGV4dFVS
TCwgY29udGV4dExpbmUpOwogfQogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2lu
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29u
c3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBv
cnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwotICAgICAgICBjaGVja01lZGlhVHlwZUFu
ZFJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRl
LCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLnN0cmluZygpICsgIicgKE1JTUUgdHlwZSAnIiAr
IHR5cGVBdHRyaWJ1dGUgKyAiJykgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5IERpcmVjdGl2ZTogIikgOgorICAgICAgICBjaGVja01lZGlh
VHlwZUFuZFJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0
cmlidXRlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLmVsaWRlZFN0cmluZygpICsgIicgKE1J
TUUgdHlwZSAnIiArIHR5cGVBdHRyaWJ1dGUgKyAiJykgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IERpcmVjdGl2ZTogIikgOgogICAgICAg
ICBjaGVja01lZGlhVHlwZShtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAppbmRleCAyOGI3MTEwOWU5N2YxYmI1ZDg4
MjIzZTUzZjFjYzA5ZWZjYzZlODYyLi5iNWZiYzhjZGVhN2UxNjg0MGNjN2YwNDYyZmZiY2JhZWRk
MmQ0OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcApAQCAtMTkyNSw0ICsxOTI1LDEyIEBA
IGJvb2wgS1VSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKICNlbmRpZgog
fQogCitTdHJpbmcgS1VSTDo6ZWxpZGVkU3RyaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoc3RyaW5n
KCkubGVuZ3RoKCkgPD0gMTAyNCkKKyAgICAgICAgcmV0dXJuIHN0cmluZygpOworCisgICAgcmV0
dXJuIHN0cmluZygpLmxlZnQoNTExKSArICIuLi4iICsgc3RyaW5nKCkucmlnaHQoNTEwKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCmluZGV4IGJhNDA5YjFhY2I5ZDE2MDMxYjQ0ZWJiYjIx
NTgyZmFjYWJkODNlMTAuLjhlYTlhMjRkNjE1OTY3M2FmNDEzMjg3ODU2MzM5NTg0MjdhZDQ0NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKQEAgLTEzMSw2ICsxMzEsOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogI2VuZGlm
CiAKKyAgICBTdHJpbmcgZWxpZGVkU3RyaW5nKCkgY29uc3Q7CisKICAgICBTdHJpbmcgcHJvdG9j
b2woKSBjb25zdDsKICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHNob3J0
IHBvcnQoKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>