<?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>45524</bug_id>
          
          <creation_ts>2010-09-10 00:25:14 -0700</creation_ts>
          <short_desc>r66992 introduces a perf slowdown in chromium tests</short_desc>
          <delta_ts>2013-04-09 16:10:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>bauerb</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>fishd</cc>
    
    <cc>podivilov</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>277053</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-10 00:25:14 -0700</bug_when>
    <thetext>roll out r66992 and r66997 - possibly introduced a perf slowdown in chromium tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277054</commentid>
    <comment_count>1</comment_count>
      <attachid>67160</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-10 00:26:00 -0700</bug_when>
    <thetext>Created attachment 67160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277058</commentid>
    <comment_count>2</comment_count>
      <attachid>67160</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-10 00:39:11 -0700</bug_when>
    <thetext>Comment on attachment 67160
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277060</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-10 00:45:23 -0700</bug_when>
    <thetext>Note that I am checking this in and then immediately rolling it back out, simply so I can point downstream Chromium at revisions nearer to the tip of the tree to test whether or not this change does introduce slowdowns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277061</commentid>
    <comment_count>4</comment_count>
      <attachid>67160</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-10 00:45:26 -0700</bug_when>
    <thetext>Comment on attachment 67160
Patch

Clearing flags on attachment: 67160

Committed r67178: &lt;http://trac.webkit.org/changeset/67178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277062</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-10 00:45:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277063</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-10 00:48:33 -0700</bug_when>
    <thetext>Reverted r67178 for reason:

re-roll-out patch to put original changes back in

Committed r67179: &lt;http://trac.webkit.org/changeset/67179&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277211</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 08:38:54 -0700</bug_when>
    <thetext>I’m having difficulty following this. What happened here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277212</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 08:39:26 -0700</bug_when>
    <thetext>Oh, I see comment 3 now. Sorry, this was really confusing. Never heard of anything like this before!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277516</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-10 16:20:01 -0700</bug_when>
    <thetext>re-titling, to capture the actual issue.

It appears that this change triggers a code path on some pages where we end up calling loader()-&gt;resourceWillUsePlugin() repeatedly during updateWidget(), and resourceWillUsePlugin() can potentially be an expensive call (e.g., it may hit the registry on Windows).

It seems like this check should be cacheable and only be invalidated if the DOM state mutates, and that would eliminate the performance hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277522</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-10 16:25:17 -0700</bug_when>
    <thetext>Note that this shows up in Chromium as an increase in the I/O operations between the renderer process and the browser process (since looking up values in the registry has to be routed through the browser via sync IPCs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277524</commentid>
    <comment_count>11</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-10 16:26:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; re-titling, to capture the actual issue.
&gt; 
&gt; It appears that this change triggers a code path on some pages where we end up calling loader()-&gt;resourceWillUsePlugin() repeatedly during updateWidget(), and resourceWillUsePlugin() can potentially be an expensive call (e.g., it may hit the registry on Windows).
&gt; 
&gt; It seems like this check should be cacheable and only be invalidated if the DOM state mutates, and that would eliminate the performance hit.

Interesting! I was expecting the regression was due to rendering fallback content, not checking MIME types. Thanks for that critical piece of info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277608</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-10 19:16:41 -0700</bug_when>
    <thetext>It looks like Safari on Windows caches MIME types in MIMETypeRegistry::getMIMETypeForExtension() (see http://trac.webkit.org/browser/trunk/WebCore/platform/win/MIMETypeRegistryWin.cpp#L65). Perhaps chromium needs to do the same thing in the web process that it checks before calling over to the UI process. Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277836</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-11 22:18:00 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; It looks like Safari on Windows caches MIME types in MIMETypeRegistry::getMIMETypeForExtension() (see http://trac.webkit.org/browser/trunk/WebCore/platform/win/MIMETypeRegistryWin.cpp#L65). Perhaps chromium needs to do the same thing in the web process that it checks before calling over to the UI process. Thoughts?

Are you sure it is wise to cache system mime mappings?  What if they change?  Should the browser need to be restarted after the user installs some other random piece of software on their system?

While caching at this layer masks the problem, it seems to suffer from correctness issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278070</commentid>
    <comment_count>14</comment_count>
      <attachid>67381</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-13 02:19:16 -0700</bug_when>
    <thetext>Created attachment 67381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278074</commentid>
    <comment_count>15</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-13 02:21:41 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=67381) [details]
&gt; Patch

Hopefully this fixes the performance regression. Dirk, if possible, you should confirm that before it gets r+&apos;d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278077</commentid>
    <comment_count>16</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-13 02:24:33 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; It looks like Safari on Windows caches MIME types in MIMETypeRegistry::getMIMETypeForExtension() (see http://trac.webkit.org/browser/trunk/WebCore/platform/win/MIMETypeRegistryWin.cpp#L65). Perhaps chromium needs to do the same thing in the web process that it checks before calling over to the UI process. Thoughts?
&gt; 
&gt; Are you sure it is wise to cache system mime mappings?  What if they change?  Should the browser need to be restarted after the user installs some other random piece of software on their system?
&gt; 
&gt; While caching at this layer masks the problem, it seems to suffer from correctness issues.

Good point; that&apos;s a drawback I didn&apos;t consider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413078</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-05-31 18:55:31 -0700</bug_when>
    <thetext>clearing ownership, in case someone else would like to take a look at this. I&apos;m not planning on looking at it any time soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413961</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-02 00:15:59 -0700</bug_when>
    <thetext>Som should this be reviewed and landed then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414260</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-02 10:52:20 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Som should this be reviewed and landed then?

If I recall correctly, Andy didn&apos;t address Darin&apos;s concerns about correctness. And, although I&apos;m not sure if we&apos;d be able easily verify the performance regression at this point, we should probably still try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414306</commentid>
    <comment_count>20</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-06-02 11:36:56 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Som should this be reviewed and landed then?
&gt; 
&gt; If I recall correctly, Andy didn&apos;t address Darin&apos;s concerns about correctness. And, although I&apos;m not sure if we&apos;d be able easily verify the performance regression at this point, we should probably still try.

Unfortunately I accepted Darin&apos;s comment at face value back in September without really evaluating it. Thinking about it now, I think the level at which the MIME type is cached is correct. The cache has the lifetime of the &lt;embed&gt; or &lt;object&gt; DOM node and is dirtied whenever the node&apos;s subtree is modified or attributes affecting plug-in loading are changed. The cache does not have the lifetime of the browser; changes in system MIME type mappings would not require a browser restart.

I think I was waiting to hear if this patch resolved the performance regression, and chromium folks were waiting for me to solve the perf regression. Sorry for the poor communication.

If we think there is still a regression, I&apos;m happy to get this patch landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414307</commentid>
    <comment_count>21</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-06-02 11:38:25 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I think I was waiting to hear if this patch resolved the performance regression, and chromium folks were waiting for me to solve the perf regression. Sorry for the poor communication.

This should read &quot;...and the chromium folks were waiting for me to fix the perceived correctness issue.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414547</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-02 16:58:57 -0700</bug_when>
    <thetext>Actually, we were mostly blocked on me verifying that the regression was fixed; Darin&apos;s comments were secondary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872168</commentid>
    <comment_count>23</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-04-09 16:10:09 -0700</bug_when>
    <thetext>LayoutTest failures for Chromium are being marked WontFix. The Bug is still accessible and referenced from TestExpectations.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67160</attachid>
            <date>2010-09-10 00:26:00 -0700</date>
            <delta_ts>2010-09-13 02:19:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45524-20100910002559.patch</filename>
            <type>text/plain</type>
            <size>12590</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NmQxOWRlMGJiZDFjOGJmM2M0MDczMmYwMzc1ODY4YjAyYWQwNjliLi41NDkzYmFi
ZmEzYTkyOTY1YjQ4ZWZlMDVjM2IxMmEyNGFkYTQwYTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDktMTAgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcm9sbCBvdXQgcjY2OTky
IGFuZCByNjY5OTcgLSBwb3NzaWJseSBpbnRyb2R1Y2VkIGEgcGVyZiBzbG93ZG93biBpbiBjaHJv
bWl1bSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDU1MjQKKworICAgICAgICAqIGZhc3QvcmVwbGFjZWQvb2JqZWN0LXBhcmFtLXVybC1jb250
cm9sLWNoYXIuaHRtbDoKKyAgICAgICAgKiBmYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLWVtYmVk
LXVybC1wYXJhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9yZXBsYWNlZC9vYmplY3Qt
d2l0aC1lbWJlZC11cmwtcGFyYW0uaHRtbDoKKwogMjAxMC0wOS0xMCAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tdXJsLWNvbnRyb2wtY2hhci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tdXJsLWNvbnRyb2wtY2hh
ci5odG1sCmluZGV4IDlmYjRiNDBiY2EzNzk1ODFiMzQxZWYxMTBkNGY4MjExNDIwNWRjMmMuLjk1
NTkwZjQyZDY2NGFlMDFkOGI0MWJmNWQxZjQ3NmNlNTY2YWYxNjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvcmVwbGFjZWQvb2JqZWN0LXBhcmFtLXVybC1jb250cm9sLWNoYXIuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1j
aGFyLmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFk
PgogICAgIDxib2R5PgotICAgICAgICA8b2JqZWN0IHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHR5cGU9
ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPgorICAgICAgICA8b2JqZWN0IHdp
ZHRoPSIwIiBoZWlnaHQ9IjAiPgogICAgICAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1
ZT0iIBwgIHVSbCgnc2NoZW1lOi8vdXJsLXdpdGgtBWNvbnRyb2wtY2hhci8nKSAeICI+CiAgICAg
ICAgIDwvb2JqZWN0PgogICAgICAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIFVSTCBz
cGVjaWZpZWQgaW4gYSAmbHQ7cGFyYW0mZ3Q7IG9mIGFuICZsdDtvYmplY3QmZ3Q7IGlzIHBhcnNl
ZCB0aGUgc2FtZSBhcyBpZiBpdCB3YXMgc3BlY2lmaWVkIGFzIHRoZSBkYXRhIGF0dHJpYnV0ZSBv
ZiB0aGUgJmx0O29iamVjdCZndDsuIFNwZWNpZmljYWxseSwgdGhpcyB2ZXJpZmllcyB0aGF0IGNv
bnRyb2wgY2hhcmFjdGVycyBhbmQgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFyZSBzdHJp
cHBlZCwgYW5kIHRoYXQgYSByZXNvdXJjZSBzdXJyb3VuZGVkIHdpdGggdXJsKCcnKSBpcyB1bmRl
cnN0b29kLjwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvb2JqZWN0
LXdpdGgtZW1iZWQtdXJsLXBhcmFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVw
bGFjZWQvb2JqZWN0LXdpdGgtZW1iZWQtdXJsLXBhcmFtLWV4cGVjdGVkLnR4dAppbmRleCA1YzAx
MWRjZWQzODNhZTU5ZTRmYjcwYzMzMTIwNzU5NWVmNzY1ZjU5Li5kMjgwYTc1NDAyZWY0ZDYxNDI2
NWY3ZWRjMTdmZmRiNTlkYTQyZTk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGxh
Y2VkL29iamVjdC13aXRoLWVtYmVkLXVybC1wYXJhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3Qtd2l0aC1lbWJlZC11cmwtcGFyYW0tZXhwZWN0ZWQu
dHh0CkBAIC0xLDggKzEsNyBAQAorICAgCiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgcmln
aHQgVVJMIGlzIGxvYWRlZCB3aGVuIHRoZXJlIGlzIGFuIDxvYmplY3Q+IHdpdGggYSAnc3JjJyA8
cGFyYW0+IGFuZCBhIGZhbGxiYWNrIDxlbWJlZD4uCiAKIEFuIDxvYmplY3Q+IHdpdGggYSAnZGF0
YScgQGF0dHIgYW5kIGEgJ3NyYycgPHBhcmFtPiBzaG91bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhl
ICdkYXRhJyBAYXR0ciBhbmQgZG9lcy4KIEFuIDxvYmplY3Q+IHdpdGggYSAnc3JjJyA8cGFyYW0+
IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ3NyYycgPHBhcmFtPiBhbmQgZG9lcy4KIEFu
IDxvYmplY3Q+IHdpdGggbm8gVVJMIHNwZWNpZmllZCBhbmQgYSBuZXN0ZWQgPGVtYmVkPiBzaG91
bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnIEBhdHRyIG9mIHRoZSA8ZW1iZWQ+IGFuZCBk
b2VzLgotQW4gPG9iamVjdD4gd2l0aCBhIFVSTCBzcGVjaWZpZWQgaW4gYSAnc3JjJyA8cGFyYW0+
IGFuZCBhIG5lc3RlZCA8ZW1iZWQ+IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ3NyYycg
QGF0dHIgb2YgdGhlIDxlbWJlZD4gYW5kIGRvZXMuCi1BbiA8b2JqZWN0PiB3aXRoIGEgVVJMIHNw
ZWNpZmllZCBpbiBhICdzcmMnIDxwYXJhbT4gYW5kIGEgTUlNRSB0eXBlIHNwZWNpZmllZCBpbiBh
ICd0eXBlJyA8cGFyYW0+IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ3NyYycgPHBhcmFt
PiBhbmQgZG9lcy4KLSAgICAgIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGxh
Y2VkL29iamVjdC13aXRoLWVtYmVkLXVybC1wYXJhbS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZXBsYWNlZC9vYmplY3Qtd2l0aC1lbWJlZC11cmwtcGFyYW0uaHRtbAppbmRleCA5NmMxZGU4MjRh
ODYxNTM5M2JmN2ZmNWNkOTY0ZTc0ZTI5ZTFkNzgwLi5lYzM0MjcwNDVlN2I1ZTdkM2E2YTgwZjM4
ZjYzYzE2MzQ0MTJhMTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29i
amVjdC13aXRoLWVtYmVkLXVybC1wYXJhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVw
bGFjZWQvb2JqZWN0LXdpdGgtZW1iZWQtdXJsLXBhcmFtLmh0bWwKQEAgLTksMTEgKzksOSBAQAog
ICAgICAgICAgICAgdmFyIG9iamVjdDFSZXN1bHQgPSAiIjsKICAgICAgICAgICAgIHZhciBvYmpl
Y3QyUmVzdWx0ID0gIiI7CiAgICAgICAgICAgICB2YXIgZW1iZWQzUmVzdWx0ID0gIiI7Ci0gICAg
ICAgICAgICB2YXIgZW1iZWQ0UmVzdWx0ID0gIiI7Ci0gICAgICAgICAgICB2YXIgb2JqZWN0NVJl
c3VsdCA9ICIiOwotICAgICAgICAgICAgdmFyIG5vdGlmaWVkID0gZmFsc2U7CiAKICAgICAgICAg
ICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWxvYWQiLCBmdW5jdGlvbihldmVu
dCkgeworCiAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnVybCA9PSAiIikKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogIApAQCAtMjMsMTkgKzIxLDEyIEBACiAgICAgICAgICAgICAgICAg
ICAgIG9iamVjdDJSZXN1bHQgPSAoZXZlbnQudXJsID09ICJvYmplY3QtcGFyYW0iID8gImRvZXMi
IDogImRvZXMgbm90Iik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQu
aWQgPT0gImVtYmVkMyIpIHsKICAgICAgICAgICAgICAgICAgICAgZW1iZWQzUmVzdWx0ID0gKGV2
ZW50LnVybCA9PSAiZW1iZWQtYXR0ciIgPyAiZG9lcyIgOiAiZG9lcyBub3QiKTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC5pZCA9PSAiZW1iZWQ0IikgewotICAgICAg
ICAgICAgICAgICAgICBlbWJlZDRSZXN1bHQgPSAoZXZlbnQudXJsID09ICJlbWJlZC1hdHRyIiA/
ICJkb2VzIiA6ICJkb2VzIG5vdCIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQu
dGFyZ2V0LmlkID09ICJvYmplY3Q1IikgewotICAgICAgICAgICAgICAgICAgICBvYmplY3Q1UmVz
dWx0ID0gKGV2ZW50LnVybCA9PSAib2JqZWN0LXBhcmFtIiA/ICJkb2VzIiA6ICJkb2VzIG5vdCIp
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQgJiYg
b2JqZWN0MVJlc3VsdCAhPSAiIiAmJiBvYmplY3QyUmVzdWx0ICE9ICIiICYmIGVtYmVkM1Jlc3Vs
dCAhPSAiIiAmJiBlbWJlZDRSZXN1bHQgIT0gIiIgJiYgb2JqZWN0NVJlc3VsdCAhPSAiIikgewor
ICAgICAgICAgICAgICAgIGlmIChvYmplY3QxUmVzdWx0ICE9ICIiICYmIG9iamVjdDJSZXN1bHQg
IT0gIiIgJiYgZW1iZWQzUmVzdWx0ICE9ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCJBbiAmbHQ7b2JqZWN0Jmd0OyB3aXRoIGEgJ2RhdGEnIEBhdHRyIGFuZCBhICdzcmMnICZsdDtw
YXJhbSZndDsgc2hvdWxkIGxvYWQgdGhlIFVSTCBmcm9tIHRoZSAnZGF0YScgQGF0dHIgYW5kICIg
KyBvYmplY3QxUmVzdWx0ICsgIi4iKTsKICAgICAgICAgICAgICAgICAgICAgZGVidWcoIkFuICZs
dDtvYmplY3QmZ3Q7IHdpdGggYSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IHNob3VsZCBsb2FkIHRoZSBV
UkwgZnJvbSB0aGUgJ3NyYycgJmx0O3BhcmFtJmd0OyBhbmQgIiArIG9iamVjdDJSZXN1bHQgKyAi
LiIpOwogICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiQW4gJmx0O29iamVjdCZndDsgd2l0aCBu
byBVUkwgc3BlY2lmaWVkIGFuZCBhIG5lc3RlZCAmbHQ7ZW1iZWQmZ3Q7IHNob3VsZCBsb2FkIHRo
ZSBVUkwgZnJvbSB0aGUgJ3NyYycgQGF0dHIgb2YgdGhlICZsdDtlbWJlZCZndDsgYW5kICIgKyBl
bWJlZDNSZXN1bHQgKyAiLiIpOwotICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiQW4gJmx0O29i
amVjdCZndDsgd2l0aCBhIFVSTCBzcGVjaWZpZWQgaW4gYSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IGFu
ZCBhIG5lc3RlZCAmbHQ7ZW1iZWQmZ3Q7IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ3Ny
YycgQGF0dHIgb2YgdGhlICZsdDtlbWJlZCZndDsgYW5kICIgKyBlbWJlZDNSZXN1bHQgKyAiLiIp
OwotICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiQW4gJmx0O29iamVjdCZndDsgd2l0aCBhIFVS
TCBzcGVjaWZpZWQgaW4gYSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IGFuZCBhIE1JTUUgdHlwZSBzcGVj
aWZpZWQgaW4gYSAndHlwZScgJmx0O3BhcmFtJmd0OyBzaG91bGQgbG9hZCB0aGUgVVJMIGZyb20g
dGhlICdzcmMnICZsdDtwYXJhbSZndDsgYW5kICIgKyBvYmplY3Q1UmVzdWx0ICsgIi4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIH0KQEAg
LTQ3LDI2ICszOCwxOCBAQAogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJv
ZHk+Ci0gICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBVUkwgaXMg
bG9hZGVkIHdoZW4gdGhlcmUgaXMgYW4gJmx0O29iamVjdCZndDsgd2l0aCBhICdzcmMnICZsdDtw
YXJhbSZndDsgYW5kIGEgZmFsbGJhY2sgJmx0O2VtYmVkJmd0Oy48L3A+Ci0gICAgICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgogICAgICAgICA8b2JqZWN0IGlkPSJvYmplY3QxIiB0eXBlPSJh
cHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIiBkYXRhPSJvYmplY3QtYXR0ciI+Ci0g
ICAgICAgICAgICA8cGFyYW0gbmFtZT0ic3JjIiB2YWx1ZT0ib2JqZWN0LXBhcmFtIj48L3BhcmFt
PgorICAgICAgICAgICAgPHBhcmFtIGlkPSJwYXJhbTEiIG5hbWU9InNyYyIgdmFsdWU9Im9iamVj
dC1wYXJhbSI+PC9wYXJhbT4KICAgICAgICAgICAgIDxlbWJlZCBpZD0iZW1iZWQxIiB0eXBlPSJh
cHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIiBzcmM9ImVtYmVkLWF0dHIiPgogICAg
ICAgICA8L29iamVjdD4KICAgICAgICAgPG9iamVjdCBpZD0ib2JqZWN0MiIgdHlwZT0iYXBwbGlj
YXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+Ci0gICAgICAgICAgICA8cGFyYW0gbmFtZT0i
bW92aWUiIHZhbHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0g
aWQ9InBhcmFtMiIgbmFtZT0ibW92aWUiIHZhbHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+CiAg
ICAgICAgICAgICA8ZW1iZWQgaWQ9ImVtYmVkMiIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQt
dGVzdC1uZXRzY2FwZSIgc3JjPSJlbWJlZC1hdHRyIj4KICAgICAgICAgPC9vYmplY3Q+CiAgICAg
ICAgIDxvYmplY3QgaWQ9Im9iamVjdDMiPgogICAgICAgICAgICAgPGVtYmVkIGlkPSJlbWJlZDMi
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiIHNyYz0iZW1iZWQtYXR0
ciI+CiAgICAgICAgIDwvb2JqZWN0PgotICAgICAgICA8b2JqZWN0IGlkPSJvYmplY3Q0Ij4KLSAg
ICAgICAgICAgIDxwYXJhbSBuYW1lPSJjb2RlIiB2YWx1ZT0ib2JqZWN0LXBhcmFtIj48L3BhcmFt
PgotICAgICAgICAgICAgPGVtYmVkIGlkPSJlbWJlZDQiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Vi
a2l0LXRlc3QtbmV0c2NhcGUiIHNyYz0iZW1iZWQtYXR0ciI+Ci0gICAgICAgIDwvb2JqZWN0Pgot
ICAgICAgICA8b2JqZWN0IGlkPSJvYmplY3Q1Ij4KLSAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJ1
cmwiIHZhbHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0gbmFt
ZT0idHlwZSIgdmFsdWU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvcGFy
YW0+Ci0gICAgICAgIDwvb2JqZWN0PgorICAgICAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCB0aGUgcmlnaHQgVVJMIGlzIGxvYWRlZCB3aGVuIHRoZXJlIGlzIGFuICZsdDtvYmplY3QmZ3Q7
IHdpdGggYSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IGFuZCBhIGZhbGxiYWNrICZsdDtlbWJlZCZndDsu
PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KICAgICA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDc0YzljMTc5MzU0NDVkMGJkZmQ2M2I3ODYyNGQ1ZTNkMmQ1MWRhYmIuLjEwM2Y2NTJjMTBm
MmY0MjQ3MTNhNzU1ZjQ2Y2Q2MDE5ZjM4YzA0ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDktMTAg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcm9sbCBvdXQgcjY2OTkyIGFuZCByNjY5OTcg
LSBwb3NzaWJseSBpbnRyb2R1Y2VkIGEgcGVyZiBzbG93ZG93biBpbiBjaHJvbWl1bSB0ZXN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU1MjQKKwor
ICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCk6CisgICAgICAgICogbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1
ZXN0RnJhbWUpOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5oOgorCiAyMDEwLTA5
LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZTlj
NmY2MDdjODhlNDNkNTYyMzEzYTQ3NWU1MTU1MWFhMmIyMWE3ZC4uNTZhNjA5NTVlOWViMDExMmU3
NmJjMzBiZmY3ZTViODQwMzFiNjFiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBA
IC0xNjMsNyArMTYzLDYgQEAgc3RhdGljIHZvaWQgbWFwRGF0YVBhcmFtVG9TcmMoVmVjdG9yPFN0
cmluZz4qIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+KiBwYXJhbVYKIHZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgU3RyaW5nJiB1cmwsIFN0cmluZyYgc2Vydmlj
ZVR5cGUpCiB7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKiwgQ2FzZUZvbGRpbmdIYXNoPiB1bmlx
dWVQYXJhbU5hbWVzOwotICAgIFN0cmluZyB1cmxQYXJhbWV0ZXI7CiAgICAgCiAgICAgLy8gU2Nh
biB0aGUgUEFSQU0gY2hpbGRyZW4gYW5kIHN0b3JlIHRoZWlyIG5hbWUvdmFsdWUgcGFpcnMuCiAg
ICAgLy8gR2V0IHRoZSBVUkwgYW5kIHR5cGUgZnJvbSB0aGUgcGFyYW1zIGlmIHdlIGRvbid0IGFs
cmVhZHkgaGF2ZSB0aGVtLgpAQCAtMTgxLDggKzE4MCw4IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1l
bnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3Rv
cjxTCiAgICAgICAgIHBhcmFtVmFsdWVzLmFwcGVuZChwLT52YWx1ZSgpKTsKIAogICAgICAgICAv
LyBGSVhNRTogdXJsIGFkanVzdG1lbnQgZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24u
Ci0gICAgICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIHVybFBhcmFtZXRlci5pc0VtcHR5KCkgJiYg
KGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzcmMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1l
LCAibW92aWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiY29kZSIpIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJ1cmwiKSkpCi0gICAgICAgICAgICB1cmxQYXJhbWV0ZXIgPSBkZXBy
ZWNhdGVkUGFyc2VVUkwocC0+dmFsdWUoKSk7CisgICAgICAgIGlmICh1cmwuaXNFbXB0eSgpICYm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgIm1vdmllIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgImNvZGUiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAidXJsIikpKQorICAgICAgICAgICAgdXJsID0gZGVwcmVjYXRlZFBh
cnNlVVJMKHAtPnZhbHVlKCkpOwogICAgICAgICAvLyBGSVhNRTogc2VydmljZVR5cGUgY2FsY3Vs
YXRpb24gZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgIGlmIChzZXJ2
aWNlVHlwZS5pc0VtcHR5KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInR5cGUiKSkgewog
ICAgICAgICAgICAgc2VydmljZVR5cGUgPSBwLT52YWx1ZSgpOwpAQCAtMjE4LDE1ICsyMTcsOSBA
QCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJp
bmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8UwogICAgIAogICAgIG1hcERhdGFQYXJhbVRvU3JjKCZw
YXJhbU5hbWVzLCAmcGFyYW1WYWx1ZXMpOwogICAgIAotICAgIC8vIEhUTUw1IHNheXMgdGhhdCBh
biBvYmplY3QgcmVzb3VyY2UncyBVUkwgaXMgc3BlY2lmaWVkIGJ5IHRoZSBvYmplY3QncyBkYXRh
Ci0gICAgLy8gYXR0cmlidXRlLCBub3QgYnkgYSBwYXJhbSBlbGVtZW50LiBIb3dldmVyLCBmb3Ig
Y29tcGF0aWJpbGl0eSwgYWxsb3cgdGhlCi0gICAgLy8gcmVzb3VyY2UncyBVUkwgdG8gYmUgZ2l2
ZW4gYnkgYSBwYXJhbSBuYW1lZCAic3JjIiwgIm1vdmllIiwgImNvZGUiIG9yICJ1cmwiCi0gICAg
Ly8gaWYgd2Uga25vdyB0aGF0IHJlc291cmNlIHBvaW50cyB0byBhIHBsdWctaW4uCi0gICAgaWYg
KHVybC5pc0VtcHR5KCkgJiYgIXVybFBhcmFtZXRlci5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3Vi
ZnJhbWVMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5zdWJm
cmFtZUxvYWRlcigpOwotICAgICAgICBpZiAobG9hZGVyLT5yZXNvdXJjZVdpbGxVc2VQbHVnaW4o
dXJsUGFyYW1ldGVyLCBzZXJ2aWNlVHlwZSkpCi0gICAgICAgICAgICB1cmwgPSB1cmxQYXJhbWV0
ZXI7Ci0gICAgfQorICAgIC8vIElmIHdlIHN0aWxsIGRvbid0IGhhdmUgYSB0eXBlLCB0cnkgdG8g
bWFwIGZyb20gYSBzcGVjaWZpYyBDTEFTU0lEIHRvIGEgdHlwZS4KKyAgICBpZiAoc2VydmljZVR5
cGUuaXNFbXB0eSgpKQorICAgICAgICBzZXJ2aWNlVHlwZSA9IHNlcnZpY2VUeXBlRm9yQ2xhc3NJ
ZChjbGFzc0lkKCkpOwogfQogCiAgICAgCkBAIC0yNTcsMTIgKzI1MCw3IEBAIHZvaWQgSFRNTE9i
amVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChib29sIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdp
bnMpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyB1cmwgPSB0aGlzLT51cmwoKTsKLSAg
ICAKLSAgICAvLyBJZiB0aGUgb2JqZWN0IGRvZXMgbm90IHNwZWNpZnkgYSBNSU1FIHR5cGUgdmlh
IGEgdHlwZSBhdHRyaWJ1dGUsIGJ1dCBkb2VzCi0gICAgLy8gY29udGFpbiBhIGNsYXNzaWQgYXR0
cmlidXRlLCB0cnkgdG8gbWFwIHRoZSBjbGFzc2lkIHRvIGEgTUlNRSB0eXBlLgogICAgIFN0cmlu
ZyBzZXJ2aWNlVHlwZSA9IHRoaXMtPnNlcnZpY2VUeXBlKCk7Ci0gICAgaWYgKHNlcnZpY2VUeXBl
LmlzRW1wdHkoKSkKLSAgICAgICAgc2VydmljZVR5cGUgPSBzZXJ2aWNlVHlwZUZvckNsYXNzSWQo
Y2xhc3NJZCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgam9pbmVkIGludG8g
YSBQbHVnaW5QYXJhbWV0ZXJzIGNsYXNzLgogICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtTmFtZXM7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKaW5kZXggZDM2NGU4OGY4YjY4MzhmZTU2Y2UyMGRk
YjJmYjVmYWJjOTljMGE1MS4uYzI1YjM3ZTcxZjcxMDU3ZGJjYmRhZmFiYmI4ODIyZTJhNzhlMmRl
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtODcsMTUgKzg3LDYgQEAgYm9vbCBT
dWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBTdHIKIAogICAgIHJldHVybiB0cnVlOwogfQotICAgIAotYm9vbCBTdWJm
cmFtZUxvYWRlcjo6cmVzb3VyY2VXaWxsVXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIEtVUkwgY29tcGxldGVkVVJMOwotICAgIGlmICgh
dXJsLmlzRW1wdHkoKSkKLSAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsK
LSAgICBib29sIHVzZUZhbGxiYWNrOwotICAgIHJldHVybiBzaG91bGRVc2VQbHVnaW4oY29tcGxl
dGVkVVJMLCBtaW1lVHlwZSwgZmFsc2UsIHVzZUZhbGxiYWNrKTsKLX0KIAogYm9vbCBTdWJmcmFt
ZUxvYWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25lckVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwKICAg
ICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmgKaW5kZXggYTU3MzA0NTRjM2YyYTBhOTYwMjUyMTE5MTgzOTRlODc5ZTJhYzk3ZC4uNmMzYmFm
ODk4MTBiN2Q5ZDY3MmMyZTc2ODg5MjBlNDE1YmVlMzExZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRl
ci5oCkBAIC03NSw4ICs3NSw2IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93UGx1Z2lucyhSZWFz
b25Gb3JDYWxsaW5nQWxsb3dQbHVnaW5zKTsKIAogICAgIGJvb2wgY29udGFpbnNQbHVnaW5zKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250YWluc1BsdWdpbnM7IH0KLSAgICAKLSAgICBib29sIHJlc291
cmNlV2lsbFVzZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CiAKIHByaXZhdGU6CiAgICAgRnJhbWUqIGxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZy
YW1lT3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVO
YW1lLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67381</attachid>
            <date>2010-09-13 02:19:16 -0700</date>
            <delta_ts>2010-09-13 03:53:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45524-20100913021915.patch</filename>
            <type>text/plain</type>
            <size>20442</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzM2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODQgQEAKKzIwMTAtMDktMTMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHI2Njk5
MiBpbnRyb2R1Y2VzIGEgcGVyZiBzbG93ZG93biBpbiBjaHJvbWl1bSB0ZXN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU1MjQKKworICAgICAgICBy
NjY5OTIgaW50cm9kdWNlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gYnkgbWFraW5nIGFkZGl0
aW9uYWwgY2FsbHMgdG8KKyAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRU
eXBlKCkgYW5kCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VQbHVnaW5Eb2N1
bWVudCgpIHdoZW4gbG9hZGluZyBwbHVnLWlucywgd2hpY2gKKyAgICAgICAgY2FuIGJlIGV4cGVu
c2l2ZSBjYWxscyBvbiBzb21lIHBsYXRmb3Jtcy4gRml4IHRoZSByZWdyZXNzaW9uIGJ5IGNhY2hp
bmcKKyAgICAgICAgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGVzZSB0d28gbWV0aG9kcy4KKworICAg
ICAgICBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBtb3ZpbmcgdGhlIGNhbGwgc2l0ZXMgb2YgdGhl
c2UgdHdvIGZ1bmN0aW9ucyBvdXQKKyAgICAgICAgb2YgU3ViZnJhbWVMb2FkZXIgYW5kIGludG8g
SFRNTFBsdWdJbkltYWdlRWxlbWVudC4gSFRNTFBsdWdJbkltYWdlRWxlbWVudAorICAgICAgICBj
YWNoZXMgdGhlIHJldHVybiB2YWx1ZXMgb2YgdGhlc2UgdHdvIG1ldGhvZHMsIGxhemlseSB1cGRh
dGluZyB0aGVtIHdoZW4KKyAgICAgICAgdGhleSBiZWNvbWUgc3RhbGUgKGJlY2F1c2UgYW4gYXR0
cmlidXRlIG9yIHBhcmFtIGVsZW1lbnQgc3BlY2lmeWluZyBhIFVSTAorICAgICAgICBvciBNSU1F
IHR5cGUgY2hhbmdlcykuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQgdGhlbiBwYXNzZXMgdGhlc2Ug
dmFsdWVzIHRvCisgICAgICAgIFN1YmZyYW1lTG9hZGVyIGR1cmluZyBsb2FkaW5nLgorCisgICAg
ICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogQ2FsbAorICAgICAgICBzZXROZWVk
c1RvRGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGUoKSB3aGVuIFVSTCBvciBNSU1FIHR5cGUgYXR0
cmlidXRlcworICAgICAgICBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVt
ZW50Ojp1cGRhdGVXaWRnZXQpOiBDYWxsCisgICAgICAgIGRldGVybWluZU9iamVjdENvbnRlbnRU
eXBlSWZOZWVkZWQoKSB0byBlbnN1cmUgbV9vYmplY3RDb250ZW50VHlwZSBhbmQKKyAgICAgICAg
bV9zaG91bGRVc2VQbHVnaW5Eb2N1bWVudCBhcmUgdXAtdG8tZGF0ZSBiZWZvcmUgbG9hZGluZy4K
KyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IENhbGwKKyAgICAgICAg
c2V0TmVlZHNUb0RldGVybWluZU9iamVjdENvbnRlbnRUeXBlKCkgd2hlbiBVUkwgb3IgTUlNRSB0
eXBlIGF0dHJpYnV0ZXMKKyAgICAgICAgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9i
amVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOiBJZiB0aGVyZSBpcyBhIGNoaWxkCisg
ICAgICAgIHBhcmFtIGVsZW1lbnQgc3BlY2lmeWluZyBhIFVSTCwgY2FsbCBkZXRlcm1pbmVPYmpl
Y3RDb250ZW50VHlwZUlmTmVlZGVkKCkKKyAgICAgICAgd2l0aCB0aGlzIFVSTC4gVGhpcyBlbnN1
cmVzIHRoYXQgb2JqZWN0Q29udGVudFR5cGUgaXMgc2V0IGNvcnJlY3RseSBzbworICAgICAgICB0
aGF0IHRoZSByaWdodCBkZWNpc2lvbiBpcyBtYWRlIHdoZW4KKyAgICAgICAgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6c2hvdWxkVXNlUGx1Z2luKCkgaXMgY2FsbGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCk6IENhbGwKKyAgICAgICAgZGV0ZXJt
aW5lT2JqZWN0Q29udGVudFR5cGVJZk5lZWRlZCgpIHRvIGVuc3VyZSBtX29iamVjdENvbnRlbnRU
eXBlIGFuZAorICAgICAgICBtX3Nob3VsZFVzZVBsdWdpbkRvY3VtZW50IGFyZSB1cC10by1kYXRl
IGJlZm9yZSBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZCk6IENhbGwKKyAgICAgICAgc2V0TmVlZHNUb0RldGVybWluZUNvbnRlbnRU
eXBlKHRydWUpIGluIGNhc2UgYSBjaGlsZCBwYXJhbSB3YXMgYWRkZWQKKyAgICAgICAgdGhhdCBj
b3VsZCBhZmZlY3QgcGx1Zy1pbiBsb2FkaW5nLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTogSW5pdGlhbGl6ZQorICAgICAgICBtX29iamVjdENv
bnRlbnRUeXBlIGFuZCBtX3Nob3VsZFVzZVBsdWdpbkRvY3VtZW50LgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d291bGRMb2FkQXNOZXRzY2FwZVBsdWdpbik6IElt
cGxlbWVudAorICAgICAgICB0aGlzIGluIHRlcm1zIG9mIG1fc2hvdWxkVXNlUGx1Z2luRG9jdW1l
bnQuIEFzc2VydCB0aGF0CisgICAgICAgIG5lZWRzVG9EZXRlcm1pbmVPYmplY3RDb250ZW50VHlw
ZSgpIGlzIGZhbHNlIHRvIGVuc3VyZSB0aGF0IHdlIGFyZW4ndAorICAgICAgICB1c2luZyBhIHN0
YWxlIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2hv
dWxkVXNlUGx1Z2luKTogQWRkIGEgaGVscGVyIG1ldGhvZAorICAgICAgICB0aGF0IGNhbGxzIFN1
YmZyYW1lTG9hZGVyOjpzaG91bGRVc2VQbHVnaW4oKSB3aXRoIHRoZSBjYWNoZWQgdmFsdWVzIG9m
CisgICAgICAgIG1fb2JqZWN0Q29udGVudFR5cGUgYW5kIG1fc2hvdWxkVXNlUGx1Z2luRG9jdW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkZXRlcm1pbmVP
YmplY3RDb250ZW50VHlwZUlmTmVlZGVkKToKKyAgICAgICAgQ2FsbCBkZXRlcm1pbmVPYmplY3RD
b250ZW50VHlwZSgpIGlmIG1fb2JqZWN0Q29udGVudFR5cGUgYW5kCisgICAgICAgIG1fc2hvdWxk
VXNlUGx1Z2luRG9jdW1lbnQgbmVlZCB1cGRhdGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmRldGVybWluZU9iamVjdENvbnRlbnRUeXBlKTogU2V0CisgICAg
ICAgIG1fb2JqZWN0Q29udGVudFR5cGUgYW5kIG1fc2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQgYnkg
Y2FsbGluZyB0aGUKKyAgICAgICAgYXBwcm9wcmlhdGUgbWV0aG9kcyBvbiB0aGUgRnJhbWVMb2Fk
ZXJDbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbGRyZW4pOiBDYWxsCisgICAgICAgIHNldE5lZWRzVG9EZXRlcm1pbmVDb250
ZW50VHlwZSh0cnVlKSBpbiBjYXNlIGEgY2hpbGQgcGFyYW0gZWxlbWVudCB3YXMKKyAgICAgICAg
cGFyc2VkIHRoYXQgY291bGQgYWZmZWN0IHBsdWctaW4gbG9hZGluZy4KKyAgICAgICAgKiBodG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnNob3VsZFVzZVBsdWdpbkRvY3VtZW50KTogUmV0dXJucworICAgICAgICBt
X3Nob3VsZFVzZVBsdWdpbkRvY3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6b2JqZWN0Q29udGVudFR5cGUpOiBSZXR1cm5zCisgICAgICAgIG1fb2JqZWN0
Q29udGVudFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpu
ZWVkc1RvRGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGUpOgorICAgICAgICBTYXlzIGlmIGRldGVy
bWluZU9iamVjdENvbnRlbnRUeXBlKCkgbmVlZHMgdG8gYmUgY2FsbGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0TmVlZHNUb0RldGVybWluZU9iamVjdENv
bnRlbnRUeXBlKToKKyAgICAgICAgSW5kaWNhdGUgdGhhdCBtX29iamVjdENvbnRlbnRUeXBlIGFu
ZCBtX3Nob3VsZFVzZVBsdWdpbkRvY3VtZW50IGFyZQorICAgICAgICBzdGFsZSBhbmQgdGhhdCBk
ZXRlcm1pbmVPYmplY3RDb250ZW50VHlwZSgpIG5lZWRzIHRvIGJlIGNhbGxlZC4KKyAgICAgICAg
KiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVM
b2FkZXI6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6
cmVxdWVzdE9iamVjdCk6IFVwZGF0ZSB0aGUgc2hvdWxkVXNlUGx1Z2luKCkKKyAgICAgICAgY2Fs
bCBzaXRlLCBwYXNzaW5nIGluIG9iamVjdENvbnRlbnRUeXBlIGFuZCBzaG91bGRVc2VQbHVnaW5E
b2N1bWVudCBmcm9tCisgICAgICAgIG93bmVyRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlN1
YmZyYW1lTG9hZGVyOjpzaG91bGRVc2VQbHVnaW4pOiBDaGFuZ2UgdGhlIHNpZ25hdHVyZSB0bwor
ICAgICAgICBhY2NlcHQgb2JqZWN0Q29udGVudFR5cGUgYW5kIHNob3VsZFVzZVBsdWdpbkRvY3Vt
ZW50IGFzIGFyZ3VtZW50cywgd2hpY2gKKyAgICAgICAgd2lsbCBiZSBzdXBwbGllZCBieSBhbiBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5o
OgorCiAyMDEwLTA5LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2NzI1MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsMTUgKzkzLDE4IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgICAgIG1fc2VydmljZVR5cGUgPSBtX3NlcnZp
Y2VUeXBlLmxlZnQocG9zKTsKICAgICAgICAgaWYgKCFpc0ltYWdlVHlwZSgpICYmIG1faW1hZ2VM
b2FkZXIpCiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLmNsZWFyKCk7Ci0gICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gY29kZUF0dHIpCisgICAgICAgIHNldE5lZWRzVG9EZXRlcm1pbmVP
YmplY3RDb250ZW50VHlwZSh0cnVlKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBj
b2RlQXR0cikgewogICAgICAgICBtX3VybCA9IGRlcHJlY2F0ZWRQYXJzZVVSTCh2YWx1ZS5zdHJp
bmcoKSk7Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNyY0F0dHIpIHsKKyAgICAgICAg
c2V0TmVlZHNUb0RldGVybWluZU9iamVjdENvbnRlbnRUeXBlKHRydWUpOworICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHNyY0F0dHIpIHsKICAgICAgICAgbV91cmwgPSBkZXByZWNhdGVk
UGFyc2VVUkwodmFsdWUuc3RyaW5nKCkpOwogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBpc0lt
YWdlVHlwZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAg
ICAgICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykp
OwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1By
ZXZpb3VzRXJyb3IoKTsKICAgICAgICAgfQorICAgICAgICBzZXROZWVkc1RvRGV0ZXJtaW5lT2Jq
ZWN0Q29udGVudFR5cGUodHJ1ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGlk
ZGVuQXR0cikgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuc3RyaW5nKCks
ICJ5ZXMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmcoKSwgInRydWUiKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IE5vdCBkeW5hbWljLCBzaW5jZSB3ZSBhZGQgdGhpcyBidXQg
ZG9uJ3QgcmVtb3ZlIGl0LCBidXQgaXQgbWF5IGJlIE9LIGZvciBub3cKQEAgLTE1MCw3ICsxNTMs
MTAgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoYm9vbAogICAgIC8vIDxv
YmplY3Q+IHdoaWNoIG1vZGlmaWVzIHVybCBhbmQgc2VydmljZVR5cGUgYmVmb3JlIGNhbGxpbmcg
dGhlc2UuCiAgICAgaWYgKCFhbGxvd2VkVG9Mb2FkRnJhbWVVUkwobV91cmwpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMgJiYgd291bGRMb2Fk
QXNOZXRzY2FwZVBsdWdpbihtX3VybCwgbV9zZXJ2aWNlVHlwZSkpCisgICAgCisgICAgZGV0ZXJt
aW5lT2JqZWN0Q29udGVudFR5cGVJZk5lZWRlZChtX3VybCwgbV9zZXJ2aWNlVHlwZSk7CisKKyAg
ICBpZiAob25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucyAmJiB3b3VsZExvYWRBc05ldHNjYXBl
UGx1Z2luKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQg
YmUgam9pbmVkIGludG8gYSBQbHVnaW5QYXJhbWV0ZXJzIGNsYXNzLgpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NzI1MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICAgICAgbV9zZXJ2aWNl
VHlwZSA9IG1fc2VydmljZVR5cGUubGVmdChwb3MpOwogICAgICAgICBpZiAocmVuZGVyZXIoKSkK
ICAgICAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOworICAgICAgICBzZXROZWVk
c1RvRGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGUodHJ1ZSk7CiAgICAgICAgIGlmICghaXNJbWFn
ZVR5cGUoKSAmJiBtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5jbGVh
cigpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRhdGFBdHRyKSB7CkBAIC04Niwx
MCArODcsMTIgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAg
ICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2
aW91c0Vycm9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgc2V0TmVlZHNU
b0RldGVybWluZU9iamVjdENvbnRlbnRUeXBlKHRydWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGNsYXNzaWRBdHRyKSB7CiAgICAgICAgIG1fY2xhc3NJZCA9IGF0dHItPnZhbHVl
KCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgc2V0TmVlZHNXaWRnZXRV
cGRhdGUodHJ1ZSk7CisgICAgICAgIHNldE5lZWRzVG9EZXRlcm1pbmVPYmplY3RDb250ZW50VHlw
ZSh0cnVlKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRyKQogICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRyKQpAQCAtMjIzLDEyICsyMjYsMTkgQEAgdm9p
ZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdQogICAgIC8vIHJlc291cmNlJ3Mg
VVJMIHRvIGJlIGdpdmVuIGJ5IGEgcGFyYW0gbmFtZWQgInNyYyIsICJtb3ZpZSIsICJjb2RlIiBv
ciAidXJsIgogICAgIC8vIGlmIHdlIGtub3cgdGhhdCByZXNvdXJjZSBwb2ludHMgdG8gYSBwbHVn
LWluLgogICAgIGlmICh1cmwuaXNFbXB0eSgpICYmICF1cmxQYXJhbWV0ZXIuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIFN1YmZyYW1lTG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5s
b2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKTsKLSAgICAgICAgaWYgKGxvYWRlci0+cmVzb3VyY2VX
aWxsVXNlUGx1Z2luKHVybFBhcmFtZXRlciwgc2VydmljZVR5cGUpKQorICAgICAgICAKKyAgICAg
ICAgLy8gUmVtZW1iZXIgaWYgZGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGUoKSBhY3R1YWxseSBu
ZWVkZWQgdG8gYmUgY2FsbGVkLgorICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSBpdCBkaWQg
YnV0IHdlIHdvbid0IGJlIHVzaW5nIHVybFBhcmFtZXRlciBmb3IgbG9hZGluZywKKyAgICAgICAg
Ly8gd2UnbGwgd2FudCB0byBtYWtlIHN1cmUgZGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGUoKSBp
cyBjYWxsZWQgYWdhaW4KKyAgICAgICAgLy8gd2l0aCB0aGUgY29ycmVjdCB1cmwgYXJndW1lbnQu
CisgICAgICAgIGJvb2wgbmVlZGVkVG9EZXRlcm1pbmVPYmplY3RDb250ZW50VHlwZSA9IG5lZWRz
VG9EZXRlcm1pbmVPYmplY3RDb250ZW50VHlwZSgpOworICAgICAgICBkZXRlcm1pbmVPYmplY3RD
b250ZW50VHlwZUlmTmVlZGVkKHVybFBhcmFtZXRlciwgc2VydmljZVR5cGUpOworICAgICAgICBp
ZiAoc2hvdWxkVXNlUGx1Z2luKHNlcnZpY2VUeXBlKSkKICAgICAgICAgICAgIHVybCA9IHVybFBh
cmFtZXRlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TmVlZHNUb0RldGVybWluZU9i
amVjdENvbnRlbnRUeXBlKG5lZWRlZFRvRGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGUpOwogICAg
IH0KIH0KLQogICAgIAogYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aGFzRmFsbGJhY2tDb250ZW50
KCkgY29uc3QKIHsKQEAgLTI2OCw2ICsyNzgsOCBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp1
cGRhdGVXaWRnZXQoYm9vCiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKICAgICBWZWN0
b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICBwYXJhbWV0ZXJzRm9yUGx1Z2luKHBhcmFtTmFt
ZXMsIHBhcmFtVmFsdWVzLCB1cmwsIHNlcnZpY2VUeXBlKTsKKyAgICAKKyAgICBkZXRlcm1pbmVP
YmplY3RDb250ZW50VHlwZUlmTmVlZGVkKHVybCwgc2VydmljZVR5cGUpOwogCiAgICAgLy8gTm90
ZTogdXJsIGlzIG1vZGlmaWVkIGFib3ZlIGJ5IHBhcmFtZXRlcnNGb3JQbHVnaW4uCiAgICAgaWYg
KCFhbGxvd2VkVG9Mb2FkRnJhbWVVUkwodXJsKSkKQEAgLTI3Niw3ICsyODgsNyBAQCB2b2lkIEhU
TUxPYmplY3RFbGVtZW50Ojp1cGRhdGVXaWRnZXQoYm9vCiAgICAgYm9vbCBmYWxsYmFja0NvbnRl
bnQgPSBoYXNGYWxsYmFja0NvbnRlbnQoKTsKICAgICByZW5kZXJFbWJlZGRlZE9iamVjdCgpLT5z
ZXRIYXNGYWxsYmFja0NvbnRlbnQoZmFsbGJhY2tDb250ZW50KTsKIAotICAgIGlmIChvbmx5Q3Jl
YXRlTm9uTmV0c2NhcGVQbHVnaW5zICYmIHdvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4odXJsLCBz
ZXJ2aWNlVHlwZSkpCisgICAgaWYgKG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMgJiYgd291
bGRMb2FkQXNOZXRzY2FwZVBsdWdpbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGJl
Zm9yZUxvYWRBbGxvd2VkTG9hZCA9IGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHVybCk7CkBAIC0z
MzYsNiArMzQ4LDcgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKAog
ICAgIHVwZGF0ZURvY05hbWVkSXRlbSgpOwogICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIXVzZUZh
bGxiYWNrQ29udGVudCgpKSB7CiAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwor
ICAgICAgICBzZXROZWVkc1RvRGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGUodHJ1ZSk7CiAgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9CiAgICAgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRl
ckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDY3MjUxKQorKysgV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBIVE1MUGx1Z0luRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKKyAgICAsIG1fbmVlZHNUb0RldGVybWluZU9iamVjdENvbnRlbnRUeXBlKHRy
dWUpCiAgICAgLy8gbV9uZWVkc1dpZGdldFVwZGF0ZSghY3JlYXRlZEJ5UGFyc2VyKSBhbGxvd3Mg
SFRNTE9iamVjdEVsZW1lbnQgdG8gZGVsYXkKICAgICAvLyB3aWRnZXQgdXBkYXRlcyB1bnRpbCBh
ZnRlciBhbGwgY2hpbGRyZW4gYXJlIHBhcnNlZC4gIEZvciBIVE1MRW1iZWRFbGVtZW50CiAgICAg
Ly8gdGhpcyBkZWxheSBpcyB1bm5lY2Vzc2FyeSwgYnV0IGl0IGlzIHNpbXBsZXIgdG8gbWFrZSBi
b3RoIGNsYXNzZXMgc2hhcmUKICAgICAvLyB0aGUgc2FtZSBjb2RlcGF0aCBpbiB0aGlzIGNsYXNz
LgogICAgICwgbV9uZWVkc1dpZGdldFVwZGF0ZSghY3JlYXRlZEJ5UGFyc2VyKQorICAgICwgbV9z
aG91bGRVc2VQbHVnaW5Eb2N1bWVudChmYWxzZSkKKyAgICAsIG1fb2JqZWN0Q29udGVudFR5cGUo
T2JqZWN0Q29udGVudE5vbmUpCiB7CiB9CiAKQEAgLTg3LDIxICs5MCwxOCBAQCBib29sIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8v
IFdlIGRvbid0IHVzZSBtX3VybCwgb3IgbV9zZXJ2aWNlVHlwZSBhcyB0aGV5IG1heSBub3QgYmUg
dGhlIGZpbmFsIHZhbHVlcwotLy8gdGhhdCA8b2JqZWN0PiB1c2VzIGRlcGVuZGluZyBvbiA8cGFy
YW0+IHZhbHVlcy4gCi1ib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndvdWxkTG9hZEFzTmV0
c2NhcGVQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUp
Citib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4o
KQoreworICAgIEFTU0VSVCghbmVlZHNUb0RldGVybWluZU9iamVjdENvbnRlbnRUeXBlKCkpOwor
ICAgIHJldHVybiBtX29iamVjdENvbnRlbnRUeXBlID09IE9iamVjdENvbnRlbnROZXRzY2FwZVBs
dWdpbjsKK30KKyAgICAKK2Jvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2hvdWxkVXNlUGx1
Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KCkpOwog
ICAgIEFTU0VSVChkb2N1bWVudCgpLT5mcmFtZSgpKTsKLSAgICBGcmFtZUxvYWRlciogZnJhbWVM
b2FkZXIgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKTsKLSAgICBBU1NFUlQoZnJhbWVM
b2FkZXIpOwotICAgIEtVUkwgY29tcGxldGVkVVJMOwotICAgIGlmICghdXJsLmlzRW1wdHkoKSkK
LSAgICAgICAgY29tcGxldGVkVVJMID0gZnJhbWVMb2FkZXItPmNvbXBsZXRlVVJMKHVybCk7Ci0K
LSAgICBpZiAoZnJhbWVMb2FkZXItPmNsaWVudCgpLT5vYmplY3RDb250ZW50VHlwZShjb21wbGV0
ZWRVUkwsIHNlcnZpY2VUeXBlKSA9PSBPYmplY3RDb250ZW50TmV0c2NhcGVQbHVnaW4pCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBTdWJmcmFtZUxvYWRlciog
bG9hZGVyID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7
CisgICAgcmV0dXJuIGxvYWRlci0+c2hvdWxkVXNlUGx1Z2luKG9iamVjdENvbnRlbnRUeXBlKCks
IHNob3VsZFVzZVBsdWdpbkRvY3VtZW50KCksIG1pbWVUeXBlKTsKIH0KIAogUmVuZGVyT2JqZWN0
KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKQEAgLTE1NSw2ICsxNTUsMzEgQEAgdm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpkZXRhY2goKQogICAgICAgICBzZXROZWVkc1dpZGdldFVwZGF0ZSh0
cnVlKTsKICAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZGV0YWNoKCk7CiB9CisgICAgCit2b2lkIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRldGVybWluZU9iamVjdENvbnRlbnRUeXBlSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpCit7CisgICAgaWYg
KG5lZWRzVG9EZXRlcm1pbmVPYmplY3RDb250ZW50VHlwZSgpKQorICAgICAgICBkZXRlcm1pbmVP
YmplY3RDb250ZW50VHlwZSh1cmwsIHNlcnZpY2VUeXBlKTsKK30KKyAgICAKK3ZvaWQgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6ZGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpCit7CisgICAgQVNTRVJUKG5lZWRzVG9E
ZXRlcm1pbmVPYmplY3RDb250ZW50VHlwZSgpKTsKKyAgICBzZXROZWVkc1RvRGV0ZXJtaW5lT2Jq
ZWN0Q29udGVudFR5cGUoZmFsc2UpOworICAgIAorICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKyAg
ICBBU1NFUlQoZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCk7CisgICAgQVNTRVJUKGZyYW1lTG9h
ZGVyKTsKKyAgICAKKyAgICBtX3Nob3VsZFVzZVBsdWdpbkRvY3VtZW50ID0gZnJhbWVMb2FkZXIt
PmNsaWVudCgpLT5zaG91bGRVc2VQbHVnaW5Eb2N1bWVudChzZXJ2aWNlVHlwZSk7CisgICAgCisg
ICAgS1VSTCBjb21wbGV0ZWRVUkw7CisgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQorICAgICAgICBj
b21wbGV0ZWRVUkwgPSBmcmFtZUxvYWRlci0+Y29tcGxldGVVUkwodXJsKTsKKyAgICAKKyAgICBt
X29iamVjdENvbnRlbnRUeXBlID0gZnJhbWVMb2FkZXItPmNsaWVudCgpLT5vYmplY3RDb250ZW50
VHlwZShjb21wbGV0ZWRVUkwsIHNlcnZpY2VUeXBlKTsKK30KIAogdm9pZCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50Ojp1cGRhdGVXaWRnZXRJZk5lY2Vzc2FyeSgpCiB7CkBAIC0xNzcsNiArMjAyLDcg
QEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpmaW5pc2hQYXJzaQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CisgICAgc2V0TmVlZHNU
b0RldGVybWluZU9iamVjdENvbnRlbnRUeXBlKHRydWUpOwogICAgIGlmIChpbkRvY3VtZW50KCkp
CiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsgICAgCiB9CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDY3MjUxKQorKysgV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTgg
QEAgcHVibGljOgogICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiByZW5kZXJFbWJlZGRlZE9iamVj
dCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVdpZGdldChib29sIG9ubHlDcmVh
dGVOb25OZXRzY2FwZVBsdWdpbnMpID0gMDsKKyAgICAKKyAgICBib29sIHNob3VsZFVzZVBsdWdp
bkRvY3VtZW50KCkgY29uc3QKKyAgICB7IAorICAgICAgICBBU1NFUlQoIW5lZWRzVG9EZXRlcm1p
bmVPYmplY3RDb250ZW50VHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2hvdWxkVXNlUGx1Z2lu
RG9jdW1lbnQ7CisgICAgfQorICAgIAorICAgIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRl
bnRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghbmVlZHNUb0RldGVybWluZU9i
amVjdENvbnRlbnRUeXBlKCkpOworICAgICAgICByZXR1cm4gbV9vYmplY3RDb250ZW50VHlwZTsK
KyAgICB9CiAKIHByb3RlY3RlZDoKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpA
QCAtNTEsMTMgKzYzLDIxIEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVXaWRn
ZXRDYWxsYmFjayhOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKTsKKyAgICAKKyAgICB2b2lkIGRldGVybWluZU9iamVjdENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsKKyAgICB2
b2lkIGRldGVybWluZU9iamVjdENvbnRlbnRUeXBlSWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpOworCisgICAgYm9vbCBuZWVkc1RvRGV0ZXJtaW5l
T2JqZWN0Q29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzVG9EZXRlcm1pbmVPYmpl
Y3RDb250ZW50VHlwZTsgfQorICAgIHZvaWQgc2V0TmVlZHNUb0RldGVybWluZU9iamVjdENvbnRl
bnRUeXBlKGJvb2wgbmVlZHNUb0RldGVybWluZU9iamVjdENvbnRlbnRUeXBlKSB7IG1fbmVlZHNU
b0RldGVybWluZU9iamVjdENvbnRlbnRUeXBlID0gbmVlZHNUb0RldGVybWluZU9iamVjdENvbnRl
bnRUeXBlOyB9CiAKICAgICBib29sIG5lZWRzV2lkZ2V0VXBkYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc1dpZGdldFVwZGF0ZTsgfQogICAgIHZvaWQgc2V0TmVlZHNXaWRnZXRVcGRhdGUoYm9v
bCBuZWVkc1dpZGdldFVwZGF0ZSkgeyBtX25lZWRzV2lkZ2V0VXBkYXRlID0gbmVlZHNXaWRnZXRV
cGRhdGU7IH0KIAogICAgIGJvb2wgYWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYg
dXJsKTsKLSAgICBib29sIHdvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4oY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpOwotCisgICAgYm9vbCB3b3VsZExvYWRBc05l
dHNjYXBlUGx1Z2luKCk7CisgICAgCisgICAgYm9vbCBzaG91bGRVc2VQbHVnaW4oY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CisgICAgCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVh
bCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsKQEAgLTY4LDcgKzg4LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVXaWRnZXRJZk5lY2Vzc2FyeSgpOwogICAgIHZpcnR1YWwgYm9v
bCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAorICAg
IGJvb2wgbV9uZWVkc1RvRGV0ZXJtaW5lT2JqZWN0Q29udGVudFR5cGU7CiAgICAgYm9vbCBtX25l
ZWRzV2lkZ2V0VXBkYXRlOworICAgIGJvb2wgbV9zaG91bGRVc2VQbHVnaW5Eb2N1bWVudDsKKyAg
ICBPYmplY3RDb250ZW50VHlwZSBtX29iamVjdENvbnRlbnRUeXBlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24g
NjcyNTEpCisrKyBXZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDE1ICs4Nyw2IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShI
VE1MRnIKIAogICAgIHJldHVybiB0cnVlOwogfQotICAgIAotYm9vbCBTdWJmcmFtZUxvYWRlcjo6
cmVzb3VyY2VXaWxsVXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQotewotICAgIEtVUkwgY29tcGxldGVkVVJMOwotICAgIGlmICghdXJsLmlzRW1wdHko
KSkKLSAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKLSAgICBib29sIHVz
ZUZhbGxiYWNrOwotICAgIHJldHVybiBzaG91bGRVc2VQbHVnaW4oY29tcGxldGVkVVJMLCBtaW1l
VHlwZSwgZmFsc2UsIHVzZUZhbGxiYWNrKTsKLX0KIAogYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVx
dWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwKICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQpAQCAtMTE5LDcgKzExMCw3IEBAIGJvb2wgU3ViZnJh
bWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoSFRNTFAKICAgICAgICAgY29tcGxldGVkVVJMID0gY29t
cGxldGVVUkwodXJsKTsKIAogICAgIGJvb2wgdXNlRmFsbGJhY2s7Ci0gICAgaWYgKHNob3VsZFVz
ZVBsdWdpbihjb21wbGV0ZWRVUkwsIG1pbWVUeXBlLCByZW5kZXJlci0+aGFzRmFsbGJhY2tDb250
ZW50KCksIHVzZUZhbGxiYWNrKSkgeworICAgIGlmIChzaG91bGRVc2VQbHVnaW4ob3duZXJFbGVt
ZW50LT5vYmplY3RDb250ZW50VHlwZSgpLCBvd25lckVsZW1lbnQtPnNob3VsZFVzZVBsdWdpbkRv
Y3VtZW50KCksIG1pbWVUeXBlLCByZW5kZXJlci0+aGFzRmFsbGJhY2tDb250ZW50KCksIHVzZUZh
bGxiYWNrKSkgewogICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5n
cygpOwogICAgICAgICBpZiAoKCFhbGxvd1BsdWdpbnMoQWJvdXRUb0luc3RhbnRpYXRlUGx1Z2lu
KQogICAgICAgICAgICAgIC8vIEFwcGxpY2F0aW9uIHBsdWdpbnMgYXJlIHBsdWdpbnMgaW1wbGVt
ZW50ZWQgYnkgdGhlIHVzZXIgYWdlbnQsIGZvciBleGFtcGxlIFF0IHBsdWdpbnMsCkBAIC0zMDcs
MTAgKzI5OCwxNiBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjphbGxvd1BsdWdpbnMoUmVhc29uCiAg
ICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkTm90QWxsb3dQbHVnaW5zKCk7
CiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9Ci0KLWJvb2wgU3ViZnJhbWVMb2FkZXI6OnNob3VsZFVz
ZVBsdWdpbihjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgaGFz
RmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNrKQorICAgIAorYm9vbCBTdWJmcmFtZUxvYWRlcjo6
c2hvdWxkVXNlUGx1Z2luKE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlLCBib29s
IHNob3VsZFVzZVBsdWdpbkRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAg
IGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnNob3VsZFVzZVBsdWdpbkRvY3VtZW50
KG1pbWVUeXBlKSkgeworICAgIGJvb2wgdXNlRmFsbGJhY2s7CisgICAgcmV0dXJuIHNob3VsZFVz
ZVBsdWdpbihvYmplY3RDb250ZW50VHlwZSwgc2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQsIG1pbWVU
eXBlLCBmYWxzZSwgdXNlRmFsbGJhY2spOworfQorICAgIAorYm9vbCBTdWJmcmFtZUxvYWRlcjo6
c2hvdWxkVXNlUGx1Z2luKE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlLCBib29s
IHNob3VsZFVzZVBsdWdpbkRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGhh
c0ZhbGxiYWNrLCBib29sJiB1c2VGYWxsYmFjaykKK3sKKyAgICBpZiAoc2hvdWxkVXNlUGx1Z2lu
RG9jdW1lbnQpIHsKICAgICAgICAgdXNlRmFsbGJhY2sgPSBmYWxzZTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzIzLDEyICszMjAsMTEgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6
c2hvdWxkVXNlUGx1Z2luKGNvbgogICAgICAgICBpZiAoIXBsdWdpbk5hbWUuaXNFbXB0eSgpICYm
ICFwbHVnaW5OYW1lLmNvbnRhaW5zKCJRdWlja1RpbWUiLCBmYWxzZSkpIAogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQotICAgICAgICAKLSAgICBPYmplY3RDb250ZW50VHlwZSBvYmpl
Y3RUeXBlID0gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5vYmplY3RDb250ZW50VHlwZSh1
cmwsIG1pbWVUeXBlKTsKKyAgICAKICAgICAvLyBJZiBhbiBvYmplY3QncyBjb250ZW50IGNhbid0
IGJlIGhhbmRsZWQgYW5kIGl0IGhhcyBubyBmYWxsYmFjaywgbGV0CiAgICAgLy8gaXQgYmUgaGFu
ZGxlZCBhcyBhIHBsdWdpbiB0byBzaG93IHRoZSBicm9rZW4gcGx1Z2luIGljb24uCi0gICAgdXNl
RmFsbGJhY2sgPSBvYmplY3RUeXBlID09IE9iamVjdENvbnRlbnROb25lICYmIGhhc0ZhbGxiYWNr
OwotICAgIHJldHVybiBvYmplY3RUeXBlID09IE9iamVjdENvbnRlbnROb25lIHx8IG9iamVjdFR5
cGUgPT0gT2JqZWN0Q29udGVudE5ldHNjYXBlUGx1Z2luIHx8IG9iamVjdFR5cGUgPT0gT2JqZWN0
Q29udGVudE90aGVyUGx1Z2luOworICAgIHVzZUZhbGxiYWNrID0gb2JqZWN0Q29udGVudFR5cGUg
PT0gT2JqZWN0Q29udGVudE5vbmUgJiYgaGFzRmFsbGJhY2s7CisgICAgcmV0dXJuIG9iamVjdENv
bnRlbnRUeXBlID09IE9iamVjdENvbnRlbnROb25lIHx8IG9iamVjdENvbnRlbnRUeXBlID09IE9i
amVjdENvbnRlbnROZXRzY2FwZVBsdWdpbiB8fCBvYmplY3RDb250ZW50VHlwZSA9PSBPYmplY3RD
b250ZW50T3RoZXJQbHVnaW47CiB9CiAKIERvY3VtZW50KiBTdWJmcmFtZUxvYWRlcjo6ZG9jdW1l
bnQoKSBjb25zdApJbmRleDogV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCShyZXZpc2lvbiA2NzI1MSkK
KysrIFdlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWluc1BsdWdpbnMoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRhaW5zUGx1Z2luczsgfQogICAgIAotICAgIGJvb2wgcmVzb3VyY2VXaWxs
VXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAg
ICBib29sIHNob3VsZFVzZVBsdWdpbihPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlw
ZSwgYm9vbCBzaG91bGRVc2VQbHVnaW5Eb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CiAKIHByaXZhdGU6CiAgICAgRnJhbWUqIGxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1l
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOwpAQCAtODQsNyAr
ODQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbG9hZFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCiAgICAgICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwogCi0gICAgYm9vbCBzaG91bGRVc2VQbHVnaW4oY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wm
IHVzZUZhbGxiYWNrKTsKKyAgICBib29sIHNob3VsZFVzZVBsdWdpbihPYmplY3RDb250ZW50VHlw
ZSBvYmplY3RDb250ZW50VHlwZSwgYm9vbCBzaG91bGRVc2VQbHVnaW5Eb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYgdXNlRmFsbGJhY2spOwog
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>