<?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>26316</bug_id>
          
          <creation_ts>2009-06-11 05:00:59 -0700</creation_ts>
          <short_desc>100% CPU hang for several seconds on large file syntax highlight.</short_desc>
          <delta_ts>2010-04-07 08:23:55 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>gsherloc</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>125296</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-06-11 05:00:59 -0700</bug_when>
    <thetext>1. Open slashdot.org in a new tab (make sure you get a new process)
2. Open inspector
3. Switch to resources tab
4. Click on all-minified.js
5. Click on idlecore-tidied.css

Expected: focus is moved to the css file
Actual: 100% CPU use until all-minified is syntax highlighted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125322</commentid>
    <comment_count>1</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2009-06-11 10:06:15 -0700</bug_when>
    <thetext>I see this with Safari 4 - sample attached.  Seems to be spending time in:

617 JSC::RegExpObject::match(JSC::ExecState*, JSC::ArgList const&amp;)
                617 JSC::RegExpConstructor::performMatch(JSC::RegExp*, JSC::UString const&amp;, int, int&amp;, int&amp;, int**)
                              617 JSC::RegExp::match(JSC::UString const&amp;, int, WTF::OwnArrayPtr&lt;int&gt;*)
                                          617 JSC::Yarr::executeRegex(JSC::Yarr::RegexCodeBlock&amp;, unsigned short const*, unsigned int, unsigned int, int*, int)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125323</commentid>
    <comment_count>2</comment_count>
      <attachid>31165</attachid>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2009-06-11 10:06:44 -0700</bug_when>
    <thetext>Created attachment 31165
sample</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125324</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2009-06-11 10:12:19 -0700</bug_when>
    <thetext>Hang also occurs in r44591</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127186</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2009-06-20 21:00:36 -0700</bug_when>
    <thetext>Reproduces as far back as r37381, and still reproduces in r44906 (I&apos;m using 10.5.8 with Safari 3.2.1, but it also occurs using Safari 4.01.  r37381 predates YARR, so it is not a problem introduced by that.  Seems like the regex engine is the problem, and this task might make a good speed test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127189</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2009-06-20 22:06:20 -0700</bug_when>
    <thetext>That should be I&apos;m using 10.5.7....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127389</commentid>
    <comment_count>6</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-06-22 11:19:37 -0700</bug_when>
    <thetext>That&apos;s really annoying.

Of course, all that time is more or less completely wasted because the file being parsed isn&apos;t really debuggable in the first place.  And a shame, because there&apos;s plenty of useful debug function (resource measurements) which can be made on that site, which you are locked out of for a certain amount of time if you inadvertently click on that file.

So one idea would be - don&apos;t parse that JavaScript.  Set a limit - say 100K - on the size of a JS file which will have syntax highlighting applied to it.  

Another heuristic could be to try to identify &quot;minified&quot; JS files - which also won&apos;t be very debuggable - you could do this by looking for very long lines, though not quite sure what the heuristic would be there, to keep from unintentionally labelling files that happen to contain long lines as &quot;do not parse&quot;.

In a perfect world, where JS developers had debug concerns in mind, we might imagine annotating a JS file with a special comment &quot;// not debuggable&quot;, in which case debuggers might decline to provide some amount of debug friendliness; but that&apos;s not very realistic; not many developers care about debugging, it seems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127393</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2009-06-22 11:22:29 -0700</bug_when>
    <thetext>This this be a P1?  The guidelines say:

Any reproducible crash or hang.

is a P1, and I think this qualifies as a reproducible hang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127411</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-06-22 11:40:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/6994458&gt; Hang using Web Inspector on slashdot.org
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127946</commentid>
    <comment_count>9</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-06-24 11:29:02 -0700</bug_when>
    <thetext>Just a quick note - tried on the latest Chrome dev channel (3.0.189.0) on Windows, and the (presumed) parsing took a long time there as well.  Not as long, but still annoyingly long.  Locked up the UI in the Inspector window, but nothing else, which was expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131197</commentid>
    <comment_count>10</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-07-12 13:44:07 -0700</bug_when>
    <thetext>I optimized the regexp and dom code and was able make it much faster (165974ms -&gt; 8503ms) but it&apos;s still too slow. I investigated a C++ implementation but it&apos;s quite difficult. Maybe I&apos;ll rewrite it in JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131209</commentid>
    <comment_count>11</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-07-12 15:28:41 -0700</bug_when>
    <thetext>It&apos;s NEVER going to be fast enough.  Fairly standard for these days for folks to &quot;optimize&quot; their JS by combining it into large wads for a single download - even Web Inspector itself does this!  There&apos;s no sense in parsing these wads of code that people have no intention of browsing through.  I vote for a byte limit on the size of a JS file that parsing will be done on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133133</commentid>
    <comment_count>12</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-07-20 07:35:41 -0700</bug_when>
    <thetext>I just noticed WebKit seems to be building with worker support (never noticed it before, maybe it&apos;s been in a while).  Moving the syntax highlighting to a worker would seem to make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133138</commentid>
    <comment_count>13</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-07-20 07:54:27 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I just noticed WebKit seems to be building with worker support (never noticed
&gt; it before, maybe it&apos;s been in a while).  Moving the syntax highlighting to a
&gt; worker would seem to make sense.

I did some research earlier. I may be wrong but Workers can&apos;t work on the DOM so 40-50 % of the work load will still be on the main thread. 

It could still be something I could try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133144</commentid>
    <comment_count>14</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-07-20 08:34:43 -0700</bug_when>
    <thetext>Wouldn&apos;t need to work directly off the DOM; you&apos;d feed it the source string, it would send back lines of HTML to replace in the DOM.  Or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133169</commentid>
    <comment_count>15</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-07-20 10:48:56 -0700</bug_when>
    <thetext>I was able to implement the current code in worker. It&apos;s good that it doesn&apos;t block the UI thread but it&apos;s unreasonably slow. (2x-10x slower)
I&apos;ll upload the patch when I get it cleaned up and ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133177</commentid>
    <comment_count>16</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-07-20 11:31:08 -0700</bug_when>
    <thetext>Excellent.  If we can&apos;t get the speed back somehow, then perhaps we can conditionally use the worker when the size of the source exceeds some value, like 20-30K.  Let&apos;s the raw &quot;do it every time&quot; patch first though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133413</commentid>
    <comment_count>17</comment_count>
      <attachid>33160</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-07-21 02:02:17 -0700</bug_when>
    <thetext>Created attachment 33160
Use web Worker for syntax highlight

The worker file is a strange file extension because &quot;*.js&quot; files are removed in the build script.

Also features better syntax highlighting and a few optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133461</commentid>
    <comment_count>18</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-07-21 07:34:22 -0700</bug_when>
    <thetext>&gt; &quot;*.js&quot; files are removed in the build script

arghh.  I&apos;ve added a pointer to this bug in Bug 26272 (a bug I opened asking for the .js files to stop getting bundled in the build).

Even so, might be better if you created a subdirectory for the worker.  I&apos;ve been wondering about organizing the scripts in front-end anyway into a set of subdirectories.

It appears you are sending each line over to the worker to be processed.  I suspect, especially for large files, that if this was chunked so you sent 100 or so lines at a time, you&apos;d see some performance improvements.  Assuming the worker messaging overhead is somewhat significant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133476</commentid>
    <comment_count>19</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-07-21 09:09:43 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; arghh.  I&apos;ve added a pointer to this bug in Bug 26272 (a bug I opened asking
&gt; for the .js files to stop getting bundled in the build).

We don&apos;t bundle for debug builds so I feel this is OK (if there really is a noticeable speed difference in bundling). I think creating a subdirectory for worker scripts is a good solution.

&gt; It appears you are sending each line over to the worker to be processed.  I
&gt; suspect, especially for large files, that if this was chunked so you sent 100
&gt; or so lines at a time, you&apos;d see some performance improvements.  Assuming the
&gt; worker messaging overhead is somewhat significant.

I suspect there is some message overhead but that doesn&apos;t explain why a few long lines has a larger performance deterioration(relative to the non-worker version) than a lot of short lines. Strange...

This is going to be a half baked solution anyway. 

The ultimate solution is doing it in JSC.  We need to modify the Lexer so it handles the white spaces.
And drastically modify HTMLViewSourceDocument which is closely tied to the HTMLTokenizer.
 
I was curious as to how far we can push this but I think I&apos;ve put enough effort into the JS solution and I&apos;m better off working on the C++ solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133477</commentid>
    <comment_count>20</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-07-21 09:12:12 -0700</bug_when>
    <thetext>I think a subdirectory would be good so we can keep .js extensions for workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133512</commentid>
    <comment_count>21</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-07-21 10:36:39 -0700</bug_when>
    <thetext>&quot;doing it in JSC&quot; ... hopefully that doesn&apos;t mean that we have to have the V8 folks  also have to &quot;do it in V8&quot;.   I don&apos;t know enough about what you&apos;re proposing to tell.

Also, thought I&apos;d point out that FireBug doesn&apos;t seem to syntax color the JS it displays.  I like the highlighting, but could live without it.  In particular re: comment 6, it&apos;s more likely that the larger the JS file, the less likely I&apos;m going to be looking at it, because it&apos;s probably some library code vs. code I&apos;ve actually written at least at development time.  

So, I&apos;m still in favor of just doing a size check and punting on the highlighting if it reaches a certain threshold - absolute size, or line length, whatever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133514</commentid>
    <comment_count>22</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-21 10:45:19 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Also, thought I&apos;d point out that FireBug doesn&apos;t seem to syntax color the JS it
&gt; displays.

It might be worth mentioning that there is a FireBug extension that supports it. I used to use it:
https://addons.mozilla.org/en-US/firefox/addon/7575

&gt; I like the highlighting, but could live without it.

I haven&apos;t actually applied the patch to try it locally. But the way I understand it is that the syntax highlighting gets applied, on any size file, without blocking the UI.  During this processing is the black+white text available in the meantime?  The problem I would see here is a potential &quot;flicker&quot; where there isn&apos;t highlighting and then boom there is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133516</commentid>
    <comment_count>23</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-07-21 10:51:32 -0700</bug_when>
    <thetext>&gt; I haven&apos;t actually applied the patch to try it locally. But the way I
&gt; understand it is that the syntax highlighting gets applied, on any size file,
&gt; without blocking the UI.  During this processing is the black+white text
&gt; available in the meantime?  The problem I would see here is a potential
&gt; &quot;flicker&quot; where there isn&apos;t highlighting and then boom there is.


Thats what I would expect. But there shouldn&apos;t be any flicker, just &quot;color appears&quot;. The text should not shift or anything like that, and the rendering should happen in one step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152128</commentid>
    <comment_count>24</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-10-03 22:10:41 -0700</bug_when>
    <thetext>The typical hang scenario is when encountering 1 very long line.  Maybe we should act on that? A line with then 300 characters is likely to be minified and undebuggable anyways.  Skipping it in the highlighter shouldn&apos;t cause too many problems (if its minified then multiline things like comments would have been stripped already).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152156</commentid>
    <comment_count>25</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-10-04 05:59:19 -0700</bug_when>
    <thetext>I&apos;m certainly in favor of &quot;skipping&quot; parsing for bits that don&apos;t need to be parsed.  And I have run into code which is sort of &quot;mixed&quot; - some minified code mixed with some plain old code.  So skipping just the minified bits seems like it would work for me.

I think I&apos;d also be happy with skipping files over a certain size, completely.  Or perhaps given your line-length insight, skipping over files with lines greater than a certain length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209635</commentid>
    <comment_count>26</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-04-07 08:23:55 -0700</bug_when>
    <thetext>Fixed by pfeldman during the TextViewer optimization.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31165</attachid>
            <date>2009-06-11 10:06:44 -0700</date>
            <delta_ts>2009-06-11 10:06:44 -0700</delta_ts>
            <desc>sample</desc>
            <filename>Sample of Safari.txt</filename>
            <type>text/plain</type>
            <size>22101</size>
            <attacher name="Gavin Sherlock">gsherloc</attacher>
            
              <data encoding="base64">U2FtcGxpbmcgcHJvY2VzcyA1MTE3IGZvciAzIHNlY29uZHMgd2l0aCAxIG1pbGxpc2Vjb25kIG9m
IHJ1biB0aW1lIGJldHdlZW4gc2FtcGxlcwpTYW1wbGluZyBjb21wbGV0ZWQsIHByb2Nlc3Npbmcg
c3ltYm9scy4uLgpBbmFseXNpcyBvZiBzYW1wbGluZyBTYWZhcmkgKHBpZCA1MTE3KSBldmVyeSAx
IG1pbGxpc2Vjb25kCkNhbGwgZ3JhcGg6CiAgICA2MTkgVGhyZWFkXzI1MDcKICAgICAgNjE5IDB4
MzJhMgogICAgICAgIDYxOSBOU0FwcGxpY2F0aW9uTWFpbgogICAgICAgICAgNjE5IC1bTlNBcHBs
aWNhdGlvbiBydW5dCiAgICAgICAgICAgIDYxOSAweGNhYzMKICAgICAgICAgICAgICA2MTkgLVtO
U0FwcGxpY2F0aW9uIG5leHRFdmVudE1hdGNoaW5nTWFzazp1bnRpbERhdGU6aW5Nb2RlOmRlcXVl
dWU6XQogICAgICAgICAgICAgICAgNjE5IF9EUFNOZXh0RXZlbnQKICAgICAgICAgICAgICAgICAg
NjE5IEJsb2NrVW50aWxOZXh0RXZlbnRNYXRjaGluZ0xpc3RJbk1vZGUKICAgICAgICAgICAgICAg
ICAgICA2MTkgUmVjZWl2ZU5leHRFdmVudENvbW1vbgogICAgICAgICAgICAgICAgICAgICAgNjE5
IFJ1bkN1cnJlbnRFdmVudExvb3BJbk1vZGUKICAgICAgICAgICAgICAgICAgICAgICAgNjE5IENG
UnVuTG9vcFJ1bkluTW9kZQogICAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBDRlJ1bkxvb3BS
dW5TcGVjaWZpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgNjE5IF9fWk43V2ViQ29yZUwx
MHRpbWVyRmlyZWRFUDE2X19DRlJ1bkxvb3BUaW1lclB2CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYxOSBXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWQoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnNo
YXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2MTkgV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpmaXJlVGltZXJzKGRvdWJsZSwgV1RGOjpWZWN0
b3I8V2ViQ29yZTo6VGltZXJCYXNlKiwgMHVsPiBjb25zdCYpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYxOSBXZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246
OmV4ZWN1dGUoV2ViQ29yZTo6RG9jdW1lbnQqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNjE5IFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9u
SW5Db250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFsdWUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBKU0M6OmNhbGwoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6Q2FsbFR5cGUsIEpTQzo6Q2FsbERhdGEgY29uc3QmLCBK
U0M6OkpTVmFsdWUsIEpTQzo6QXJnTGlzdCBjb25zdCYpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNjE5IEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoSlNDOjpG
dW5jdGlvbkJvZHlOb2RlKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTRnVuY3Rpb24qLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpBcmdMaXN0IGNvbnN0JiwgSlNDOjpTY29wZUNoYWluTm9kZSosIEpT
Qzo6SlNWYWx1ZSopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2MTcgMHgxNTliZTIwZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2MTcgX19aTjNKU0NMMTlyZWdFeHBQcm90b0Z1bmNFeGVjRVBOU185RXhlY1N0YXRl
RVBOU184SlNPYmplY3RFTlNfN0pTVmFsdWVFUktOU183QXJnTGlzdEUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MTcgSlNDOjpSZWdFeHBPYmplY3Q6
Om1hdGNoKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpBcmdMaXN0IGNvbnN0JikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxNyBKU0M6OlJlZ0V4cENv
bnN0cnVjdG9yOjpwZXJmb3JtTWF0Y2goSlNDOjpSZWdFeHAqLCBKU0M6OlVTdHJpbmcgY29uc3Qm
LCBpbnQsIGludCYsIGludCYsIGludCoqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2MTcgSlNDOjpSZWdFeHA6Om1hdGNoKEpTQzo6VVN0cmlu
ZyBjb25zdCYsIGludCwgV1RGOjpPd25BcnJheVB0cjxpbnQ+KikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MTcgSlNDOjpZYXJyOjpleGVj
dXRlUmVnZXgoSlNDOjpZYXJyOjpSZWdleENvZGVCbG9jayYsIHVuc2lnbmVkIHNob3J0IGNvbnN0
KiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIGludCosIGludCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg0IDB4MTc2NDE0OWUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODQgMHgxNzY0MTQ5ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjYgMHgxNzY0MGY1NAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NiAweDE3NjQwZjU0CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MCAweDE3
NjQwZmZiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYwIDB4MTc2NDBmZmIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDU3IDB4MTc2NDEzNTQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTcgMHgxNzY0MTM1NAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTUgMHgxNzY0MTNlZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1NSAweDE3NjQxM2VmCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NiAweDE3NjQwZmVmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2IDB4MTc2
NDBmZWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQwIDB4MTc2NDEzZmEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDAgMHgxNzY0MTNmYQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkgMHgxNzY0MTNmNAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
OSAweDE3NjQxM2Y0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzOSAweDE3NjQxNDk1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5IDB4MTc2NDE0OTUKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4IDB4MTc2NDEz
ZjIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzggMHgxNzY0MTNmMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjAgMHgxNzYzZmZmMAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCAweDE3NjNmZmYwCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCAw
eDE3NjQwNDVhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIwIDB4MTc2NDA0NWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IDB4MTc2NDBlOGUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgMHgxNzY0MGU4
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTQgMHgxNzY0MDQ5MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNCAweDE3NjQwNDkwCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMSAweDE3NjQwNDVlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExIDB4
MTc2NDA0NWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDExIDB4MTc2NDBlODIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEgMHgxNzY0MGU4MgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAweDE3NjQwZmY0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEgMHgxNzY0MGZmNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMSBqc1JlZ0V4cEV4ZWN1dGUoSlNSZWdFeHAgY29uc3QqLCB1bnNpZ25l
ZCBzaG9ydCBjb25zdCosIGludCwgaW50LCBpbnQqLCBpbnQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEganNSZWdFeHBFeGVjdXRl
KEpTUmVnRXhwIGNvbnN0KiwgdW5zaWduZWQgc2hvcnQgY29uc3QqLCBpbnQsIGludCwgaW50Kiwg
aW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAweDE1
OWJlMWVhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEg
MHgxNTliZTFlYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MSBKU0M6OkpJVFN0dWJzOjpjdGlfb3Bfbm90KHZvaWQqLCAuLi4pCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgSlNDOjpKSVRTdHViczo6Y3RpX29wX25v
dCh2b2lkKiwgLi4uKQogICAgNjE5IFRocmVhZF8yNjAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQK
ICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAgIDYxOSBXZWJDb3JlOjpJY29uRGF0
YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQoKQogICAgICAgICAgICA2MTkgV2ViQ29yZTo6
SWNvbkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFpbkxvb3AoKQogICAgICAgICAgICAgIDYxOSBwdGhy
ZWFkX2NvbmRfd2FpdCRVTklYMjAwMwogICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWdu
YWwKICAgICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgIDYxOSBUaHJlYWRf
MjcwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAg
ICAgICAgICA2MTkgQ0ZVUkxDYWNoZVdvcmtlclRocmVhZCh2b2lkKikKICAgICAgICAgICAgNjE5
IENGUnVuTG9vcFJ1bkluTW9kZQogICAgICAgICAgICAgIDYxOSBDRlJ1bkxvb3BSdW5TcGVjaWZp
YwogICAgICAgICAgICAgICAgNjE5IG1hY2hfbXNnCiAgICAgICAgICAgICAgICAgIDYxOSBtYWNo
X21zZ190cmFwCiAgICAgICAgICAgICAgICAgICAgNjE5IG1hY2hfbXNnX3RyYXAKICAgIDYxOSBU
aHJlYWRfMjgwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0
YXJ0CiAgICAgICAgICA2MTkgV2ViQ29yZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjpsb2NhbFN0b3Jh
Z2VUaHJlYWQoKQogICAgICAgICAgICA2MTkgV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2Fp
dChXVEY6Ok11dGV4JiwgZG91YmxlKQogICAgICAgICAgICAgIDYxOSBwdGhyZWFkX2NvbmRfd2Fp
dCRVTklYMjAwMwogICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgICAgICAg
ICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgIDYxOSBUaHJlYWRfMjkwMwogICAgICA2
MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkg
MHgyNjdmYgogICAgICAgICAgICA2MTkgMHgyNjg3MAogICAgICAgICAgICAgIDYxOSAweDI2YjU1
CiAgICAgICAgICAgICAgICA2MTkgQ0ZSdW5Mb29wUnVuSW5Nb2RlCiAgICAgICAgICAgICAgICAg
IDYxOSBDRlJ1bkxvb3BSdW5TcGVjaWZpYwogICAgICAgICAgICAgICAgICAgIDYxOSBtYWNoX21z
ZwogICAgICAgICAgICAgICAgICAgICAgNjE5IG1hY2hfbXNnX3RyYXAKICAgICAgICAgICAgICAg
ICAgICAgICAgNjE5IG1hY2hfbXNnX3RyYXAKICAgIDYxOSBUaHJlYWRfMmEwMwogICAgICA2MTkg
dGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgZmVf
ZnJhZ21lbnRfdGhyZWFkCiAgICAgICAgICAgIDYxOSBwdGhyZWFkX2NvbmRfd2FpdCRVTklYMjAw
MwogICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRfc2lnbmFsCiAgICAgICAgICAgICAgICA2MTkg
X19zZW13YWl0X3NpZ25hbAogICAgNjE5IFRocmVhZF8yYjAzCiAgICAgIDYxOSB0aHJlYWRfc3Rh
cnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAgIDYxOSBmZV9mcmFnbWVudF90
aHJlYWQKICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAg
ICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRf
c2lnbmFsCiAgICA2MTkgVGhyZWFkXzJjMDMKICAgICAgNjE5IHRocmVhZF9zdGFydAogICAgICAg
IDYxOSBfcHRocmVhZF9zdGFydAogICAgICAgICAgNjE5IGZlX2ZyYWdtZW50X3RocmVhZAogICAg
ICAgICAgICA2MTkgcHRocmVhZF9jb25kX3dhaXQkVU5JWDIwMDMKICAgICAgICAgICAgICA2MTkg
X19zZW13YWl0X3NpZ25hbAogICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAg
IDYxOSBUaHJlYWRfMmQwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhy
ZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgZmVfZnJhZ21lbnRfdGhyZWFkCiAgICAgICAgICAgIDYx
OSBwdGhyZWFkX2NvbmRfd2FpdCRVTklYMjAwMwogICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRf
c2lnbmFsCiAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgNjE5IFRocmVh
ZF8yZTAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQK
ICAgICAgICAgIDYxOSBmZV9mcmFnbWVudF90aHJlYWQKICAgICAgICAgICAgNjE5IHB0aHJlYWRf
Y29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAg
ICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRfc2lnbmFsCiAgICA2MTkgVGhyZWFkXzJmMDMKICAg
ICAgNjE5IHRocmVhZF9zdGFydAogICAgICAgIDYxOSBfcHRocmVhZF9zdGFydAogICAgICAgICAg
NjE5IGZlX2ZyYWdtZW50X3RocmVhZAogICAgICAgICAgICA2MTkgcHRocmVhZF9jb25kX3dhaXQk
VU5JWDIwMDMKICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgICAgICAgICAg
ICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgIDYxOSBUaHJlYWRfMzAwMwogICAgICA2MTkgdGhy
ZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgZmVfZnJh
Z21lbnRfdGhyZWFkCiAgICAgICAgICAgIDYxOSBwdGhyZWFkX2NvbmRfd2FpdCRVTklYMjAwMwog
ICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRfc2lnbmFsCiAgICAgICAgICAgICAgICA2MTkgX19z
ZW13YWl0X3NpZ25hbAogICAgNjE5IFRocmVhZF8zMTAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQK
ICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAgIDYxOSBfX05TVGhyZWFkX19tYWlu
X18KICAgICAgICAgICAgNjE5IC1bTlNUaHJlYWQgbWFpbl0KICAgICAgICAgICAgICA2MTkgK1tO
U1VSTENvbm5lY3Rpb24oTlNVUkxDb25uZWN0aW9uUmVhbGx5SW50ZXJuYWwpIF9yZXNvdXJjZUxv
YWRMb29wOl0KICAgICAgICAgICAgICAgIDYxOSBDRlJ1bkxvb3BSdW5Jbk1vZGUKICAgICAgICAg
ICAgICAgICAgNjE5IENGUnVuTG9vcFJ1blNwZWNpZmljCiAgICAgICAgICAgICAgICAgICAgNjE5
IG1hY2hfbXNnCiAgICAgICAgICAgICAgICAgICAgICA2MTkgbWFjaF9tc2dfdHJhcAogICAgICAg
ICAgICAgICAgICAgICAgICA2MTkgbWFjaF9tc2dfdHJhcAogICAgNjE5IFRocmVhZF8zMjAzCiAg
ICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAg
IDYxOSBzZWxlY3QkREFSV0lOX0VYVFNOCiAgICAgICAgICAgIDYxOSBzZWxlY3QkREFSV0lOX0VY
VFNOCiAgICA2MTkgVGhyZWFkXzMzMDMKICAgICAgNjE5IHRocmVhZF9zdGFydAogICAgICAgIDYx
OSBfcHRocmVhZF9zdGFydAogICAgICAgICAgNjE5IDB4NDI2Y2IKICAgICAgICAgICAgNjE5IDB4
NDI3NTMKICAgICAgICAgICAgICA2MTkgMHgxMWRmMjEKICAgICAgICAgICAgICAgIDYxOSAweDEx
ZGUzMwogICAgICAgICAgICAgICAgICA2MTkgV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2Fp
dChXVEY6Ok11dGV4JiwgZG91YmxlKQogICAgICAgICAgICAgICAgICAgIDYxOSBwdGhyZWFkX2Nv
bmRfd2FpdCRVTklYMjAwMwogICAgICAgICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWdu
YWwKICAgICAgICAgICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgIDYxOSBU
aHJlYWRfMzQwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0
YXJ0CiAgICAgICAgICA2MTkgX19OU1RocmVhZF9fbWFpbl9fCiAgICAgICAgICAgIDYxOSAtW05T
VGhyZWFkIG1haW5dCiAgICAgICAgICAgICAgNjE5IC1bTlNVSUhlYXJ0QmVhdCBfaGVhcnRCZWF0
VGhyZWFkOl0KICAgICAgICAgICAgICAgIDYxOSAtW05TQ29uZGl0aW9uTG9jayBsb2NrV2hlbkNv
bmRpdGlvbjpdCiAgICAgICAgICAgICAgICAgIDYxOSAtW05TQ29uZGl0aW9uTG9jayBsb2NrV2hl
bkNvbmRpdGlvbjpiZWZvcmVEYXRlOl0KICAgICAgICAgICAgICAgICAgICA2MTkgLVtOU0NvbmRp
dGlvbiB3YWl0VW50aWxEYXRlOl0KICAgICAgICAgICAgICAgICAgICAgIDYxOSBwdGhyZWFkX2Nv
bmRfdGltZWR3YWl0X3JlbGF0aXZlX25wCiAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBfcHRo
cmVhZF9jb25kX3dhaXQKICAgICAgICAgICAgICAgICAgICAgICAgICA2MTkgc2VtYXBob3JlX3Rp
bWVkd2FpdF9zaWduYWxfdHJhcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgNjE5IHNlbWFw
aG9yZV90aW1lZHdhaXRfc2lnbmFsX3RyYXAKICAgIDYxOSBUaHJlYWRfMzUwMwogICAgICA2MTkg
dGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgUHJp
dmF0ZU1QRW50cnlQb2ludAogICAgICAgICAgICA2MTkgVGFza0dsdWUKICAgICAgICAgICAgICA2
MTkgQUNFTVBUaHJlYWQ6OlRhc2soKQogICAgICAgICAgICAgICAgNjE5IE1QV2FpdE9uUXVldWUK
ICAgICAgICAgICAgICAgICAgNjE5IFRTV2FpdE9uQ29uZGl0aW9uVGltZWRSZWxhdGl2ZQogICAg
ICAgICAgICAgICAgICAgIDYxOSBUU1dhaXRPbkNvbmRpdGlvbgogICAgICAgICAgICAgICAgICAg
ICAgNjE5IHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICAgICAgICAg
IDYxOSBfX3NlbXdhaXRfc2lnbmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgNjE5IF9fc2Vt
d2FpdF9zaWduYWwKICAgIDYxOSBUaHJlYWRfMzYwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAg
ICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgUHJpdmF0ZU1QRW50cnlQb2lu
dAogICAgICAgICAgICA2MTkgVGFza0dsdWUKICAgICAgICAgICAgICA2MTkgQUNFTVBUaHJlYWQ6
OlRhc2soKQogICAgICAgICAgICAgICAgNjE5IE1QV2FpdE9uUXVldWUKICAgICAgICAgICAgICAg
ICAgNjE5IFRTV2FpdE9uQ29uZGl0aW9uVGltZWRSZWxhdGl2ZQogICAgICAgICAgICAgICAgICAg
IDYxOSBUU1dhaXRPbkNvbmRpdGlvbgogICAgICAgICAgICAgICAgICAgICAgNjE5IHB0aHJlYWRf
Y29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRf
c2lnbmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAg
IDYxOSBUaHJlYWRfMzcwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhy
ZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgUHJpdmF0ZU1QRW50cnlQb2ludAogICAgICAgICAgICA2
MTkgVGFza0dsdWUKICAgICAgICAgICAgICA2MTkgQUNFTVBUaHJlYWQ6OlRhc2soKQogICAgICAg
ICAgICAgICAgNjE5IE1QV2FpdE9uUXVldWUKICAgICAgICAgICAgICAgICAgNjE5IFRTV2FpdE9u
Q29uZGl0aW9uVGltZWRSZWxhdGl2ZQogICAgICAgICAgICAgICAgICAgIDYxOSBUU1dhaXRPbkNv
bmRpdGlvbgogICAgICAgICAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29uZF93YWl0JFVOSVgy
MDAzCiAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRfc2lnbmFsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgIDYxOSBUaHJlYWRfMzgw
MwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAg
ICAgICA2MTkgUHJpdmF0ZU1QRW50cnlQb2ludAogICAgICAgICAgICA2MTkgVGFza0dsdWUKICAg
ICAgICAgICAgICA2MTkgQUNFTVBUaHJlYWQ6OlRhc2soKQogICAgICAgICAgICAgICAgNjE5IE1Q
V2FpdE9uUXVldWUKICAgICAgICAgICAgICAgICAgNjE5IFRTV2FpdE9uQ29uZGl0aW9uVGltZWRS
ZWxhdGl2ZQogICAgICAgICAgICAgICAgICAgIDYxOSBUU1dhaXRPbkNvbmRpdGlvbgogICAgICAg
ICAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAg
ICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRfc2lnbmFsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgIDYxOSBUaHJlYWRfMzkwMwogICAgICA2MTkgdGhy
ZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgUHJpdmF0
ZU1QRW50cnlQb2ludAogICAgICAgICAgICA2MTkgVGFza0dsdWUKICAgICAgICAgICAgICA2MTkg
QUNFTVBUaHJlYWQ6OlRhc2soKQogICAgICAgICAgICAgICAgNjE5IE1QV2FpdE9uUXVldWUKICAg
ICAgICAgICAgICAgICAgNjE5IFRTV2FpdE9uQ29uZGl0aW9uVGltZWRSZWxhdGl2ZQogICAgICAg
ICAgICAgICAgICAgIDYxOSBUU1dhaXRPbkNvbmRpdGlvbgogICAgICAgICAgICAgICAgICAgICAg
NjE5IHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICAgICAgICAgIDYx
OSBfX3NlbXdhaXRfc2lnbmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2Fp
dF9zaWduYWwKICAgIDYxOSBUaHJlYWRfM2EwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAg
ICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgUHJpdmF0ZU1QRW50cnlQb2ludAog
ICAgICAgICAgICA2MTkgVGFza0dsdWUKICAgICAgICAgICAgICA2MTkgQUNFTVBUaHJlYWQ6OlRh
c2soKQogICAgICAgICAgICAgICAgNjE5IE1QV2FpdE9uUXVldWUKICAgICAgICAgICAgICAgICAg
NjE5IFRTV2FpdE9uQ29uZGl0aW9uVGltZWRSZWxhdGl2ZQogICAgICAgICAgICAgICAgICAgIDYx
OSBUU1dhaXRPbkNvbmRpdGlvbgogICAgICAgICAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29u
ZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRfc2ln
bmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgIDYx
OSBUaHJlYWRfM2IwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFk
X3N0YXJ0CiAgICAgICAgICA2MTkgUHJpdmF0ZU1QRW50cnlQb2ludAogICAgICAgICAgICA2MTkg
VGFza0dsdWUKICAgICAgICAgICAgICA2MTkgQUNFTVBUaHJlYWQ6OlRhc2soKQogICAgICAgICAg
ICAgICAgNjE5IE1QV2FpdE9uUXVldWUKICAgICAgICAgICAgICAgICAgNjE5IFRTV2FpdE9uQ29u
ZGl0aW9uVGltZWRSZWxhdGl2ZQogICAgICAgICAgICAgICAgICAgIDYxOSBUU1dhaXRPbkNvbmRp
dGlvbgogICAgICAgICAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAz
CiAgICAgICAgICAgICAgICAgICAgICAgIDYxOSBfX3NlbXdhaXRfc2lnbmFsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjE5IF9fc2Vtd2FpdF9zaWduYWwKICAgIDYxOSBUaHJlYWRfM2MwMwog
ICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAg
ICA2MTkgdGhyZWFkX3Byb3h5CiAgICAgICAgICAgIDYxOSBib29zdDo6ZnVuY3Rpb24wPHZvaWQs
IHN0ZDo6YWxsb2NhdG9yPGJvb3N0OjpmdW5jdGlvbl9iYXNlPiA+OjpvcGVyYXRvcigpKCkgY29u
c3QKICAgICAgICAgICAgICA2MTkgQUdNV29ya1F1ZXVlVGFzazo6b3BlcmF0b3IoKSgpCiAgICAg
ICAgICAgICAgICA2MTkgQUdNTWVzc2FnZVF1ZXVlSW1wbDo6UHVsbCgpCiAgICAgICAgICAgICAg
ICAgIDYxOSBwdGhyZWFkX2NvbmRpdGlvbl9iYXNlOjpXYWl0KHB0aHJlYWRfc2NvcGVkX2xvY2tf
YmFzZSYpCiAgICAgICAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29uZF93YWl0CiAgICAgICAg
ICAgICAgICAgICAgICA2MTkgX3B0aHJlYWRfY29uZF93YWl0CiAgICAgICAgICAgICAgICAgICAg
ICAgIDYxOSBzZW1hcGhvcmVfd2FpdF9zaWduYWxfdHJhcAogICAgICAgICAgICAgICAgICAgICAg
ICAgIDYxOSBzZW1hcGhvcmVfd2FpdF9zaWduYWxfdHJhcAogICAgNjE5IFRocmVhZF8zZDAzCiAg
ICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAg
IDYxOSB0aHJlYWRfcHJveHkKICAgICAgICAgICAgNjE5IGJvb3N0OjpmdW5jdGlvbjA8dm9pZCwg
c3RkOjphbGxvY2F0b3I8Ym9vc3Q6OmZ1bmN0aW9uX2Jhc2U+ID46Om9wZXJhdG9yKCkoKSBjb25z
dAogICAgICAgICAgICAgIDYxOSBBR01Xb3JrUXVldWVUYXNrOjpvcGVyYXRvcigpKCkKICAgICAg
ICAgICAgICAgIDYxOSBBR01NZXNzYWdlUXVldWVJbXBsOjpQdWxsKCkKICAgICAgICAgICAgICAg
ICAgNjE5IHB0aHJlYWRfY29uZGl0aW9uX2Jhc2U6OldhaXQocHRocmVhZF9zY29wZWRfbG9ja19i
YXNlJikKICAgICAgICAgICAgICAgICAgICA2MTkgcHRocmVhZF9jb25kX3dhaXQKICAgICAgICAg
ICAgICAgICAgICAgIDYxOSBfcHRocmVhZF9jb25kX3dhaXQKICAgICAgICAgICAgICAgICAgICAg
ICAgNjE5IHNlbWFwaG9yZV93YWl0X3NpZ25hbF90cmFwCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjE5IHNlbWFwaG9yZV93YWl0X3NpZ25hbF90cmFwCiAgICA2MTkgVGhyZWFkXzNlMDMKICAg
ICAgNjE5IHRocmVhZF9zdGFydAogICAgICAgIDYxOSBfcHRocmVhZF9zdGFydAogICAgICAgICAg
NjE5IHRocmVhZF9wcm94eQogICAgICAgICAgICA2MTkgYm9vc3Q6OmZ1bmN0aW9uMDx2b2lkLCBz
dGQ6OmFsbG9jYXRvcjxib29zdDo6ZnVuY3Rpb25fYmFzZT4gPjo6b3BlcmF0b3IoKSgpIGNvbnN0
CiAgICAgICAgICAgICAgNjE5IEFHTVdvcmtRdWV1ZVRhc2s6Om9wZXJhdG9yKCkoKQogICAgICAg
ICAgICAgICAgNjE5IEFHTU1lc3NhZ2VRdWV1ZUltcGw6OlB1bGwoKQogICAgICAgICAgICAgICAg
ICA2MTkgcHRocmVhZF9jb25kaXRpb25fYmFzZTo6V2FpdChwdGhyZWFkX3Njb3BlZF9sb2NrX2Jh
c2UmKQogICAgICAgICAgICAgICAgICAgIDYxOSBwdGhyZWFkX2NvbmRfd2FpdAogICAgICAgICAg
ICAgICAgICAgICAgNjE5IF9wdGhyZWFkX2NvbmRfd2FpdAogICAgICAgICAgICAgICAgICAgICAg
ICA2MTkgc2VtYXBob3JlX3dhaXRfc2lnbmFsX3RyYXAKICAgICAgICAgICAgICAgICAgICAgICAg
ICA2MTkgc2VtYXBob3JlX3dhaXRfc2lnbmFsX3RyYXAKICAgIDYxOSBUaHJlYWRfM2YwMwogICAg
ICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2
MTkgQ29waWVzUGFnZXNQREVfT3BlbgogICAgICAgICAgICA2MTkga2V2ZW50CiAgICAgICAgICAg
ICAgNjE5IGtldmVudAogICAgNjE5IFRocmVhZF80MDAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQK
ICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAgIDYxOSBnbHZtRG9Xb3JrCiAgICAg
ICAgICAgIDYxOSBwdGhyZWFkX2NvbmRfd2FpdCRVTklYMjAwMwogICAgICAgICAgICAgIDYxOSBf
X3NlbXdhaXRfc2lnbmFsCiAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAg
NjE5IFRocmVhZF80MTAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJl
YWRfc3RhcnQKICAgICAgICAgIDYxOSBDTU1Db252VGFzayh2b2lkKikKICAgICAgICAgICAgNjE5
IHB0aHJlYWRTZW1hcGhvcmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopCiAgICAgICAgICAgICAg
NjE5IHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICA2MTkgX19zZW13
YWl0X3NpZ25hbAogICAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgNjE5
IFRocmVhZF80MjAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRf
c3RhcnQKICAgICAgICAgIDYxOSBDTU1Db252VGFzayh2b2lkKikKICAgICAgICAgICAgNjE5IHB0
aHJlYWRTZW1hcGhvcmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopCiAgICAgICAgICAgICAgNjE5
IHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0
X3NpZ25hbAogICAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgNjE5IFRo
cmVhZF80MzAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3Rh
cnQKICAgICAgICAgIDYxOSBDTU1Db252VGFzayh2b2lkKikKICAgICAgICAgICAgNjE5IHB0aHJl
YWRTZW1hcGhvcmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopCiAgICAgICAgICAgICAgNjE5IHB0
aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3Np
Z25hbAogICAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgNjE5IFRocmVh
ZF80NDAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQK
ICAgICAgICAgIDYxOSBDTU1Db252VGFzayh2b2lkKikKICAgICAgICAgICAgNjE5IHB0aHJlYWRT
ZW1hcGhvcmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopCiAgICAgICAgICAgICAgNjE5IHB0aHJl
YWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25h
bAogICAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgNjE5IFRocmVhZF80
NTAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAg
ICAgICAgIDYxOSBDTU1Db252VGFzayh2b2lkKikKICAgICAgICAgICAgNjE5IHB0aHJlYWRTZW1h
cGhvcmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopCiAgICAgICAgICAgICAgNjE5IHB0aHJlYWRf
Y29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAog
ICAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgNjE5IFRocmVhZF80NjAz
CiAgICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAg
ICAgIDYxOSBDTU1Db252VGFzayh2b2lkKikKICAgICAgICAgICAgNjE5IHB0aHJlYWRTZW1hcGhv
cmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopCiAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29u
ZF93YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAg
ICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgNjE5IFRocmVhZF80NzAzCiAg
ICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAg
IDYxOSBDTU1Db252VGFzayh2b2lkKikKICAgICAgICAgICAgNjE5IHB0aHJlYWRTZW1hcGhvcmVX
YWl0KHRfcHRocmVhZFNlbWFwaG9yZSopCiAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29uZF93
YWl0JFVOSVgyMDAzCiAgICAgICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgICAg
ICAgICAgICAgICA2MTkgX19zZW13YWl0X3NpZ25hbAogICAgNjE5IFRocmVhZF80ODAzCiAgICAg
IDYxOSBzdGFydF93cXRocmVhZAogICAgICAgIDYxOSBfX3dvcmtxX29wcwogICAgICAgICAgNjE5
IF9fd29ya3Ffb3BzCiAgICA2MTkgVGhyZWFkXzQ5MDMKICAgICAgNjE5IDB4MAogICAgICAgIDYx
OSAweDAKICAgIDYxOSBUaHJlYWRfNGEwMwogICAgICA2MTkgMHgwCiAgICAgICAgNjE5IDB4MAog
ICAgNjE5IFRocmVhZF80YjAzCiAgICAgIDYxOSAweDAKICAgICAgICA2MTkgMHgwCiAgICA2MTkg
VGhyZWFkXzRjMDMKICAgICAgNjE5IDB4MAogICAgICAgIDYxOSAweDAKICAgIDYxOSBUaHJlYWRf
NGQwMwogICAgICA2MTkgMHgwCiAgICAgICAgNjE5IDB4MAogICAgNjE5IFRocmVhZF80ZTAzCiAg
ICAgIDYxOSAweDAKICAgICAgICA2MTkgMHgwCiAgICA2MTkgVGhyZWFkXzRmMDMKICAgICAgNjE5
IDB4MAogICAgICAgIDYxOSAweDAKICAgIDYxOSBUaHJlYWRfNTAwMwogICAgICA2MTkgdGhyZWFk
X3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgRmxhc2hfRW5m
b3JjZUxvY2FsU2VjdXJpdHkKICAgICAgICAgICAgNjE5IG1hY2hfbXNnCiAgICAgICAgICAgICAg
NjE5IG1hY2hfbXNnX3RyYXAKICAgICAgICAgICAgICAgIDYxOSBtYWNoX21zZ190cmFwCiAgICA2
MTkgVGhyZWFkXzUxMDMKICAgICAgNjE5IHRocmVhZF9zdGFydAogICAgICAgIDYxOSBfcHRocmVh
ZF9zdGFydAogICAgICAgICAgNjE5IDB4MjQwZGUwMzYKICAgICAgICAgICAgNjE5IEZsYXNoX0Vu
Zm9yY2VMb2NhbFNlY3VyaXR5CiAgICAgICAgICAgICAgNjE5IDB4MjQwZGRjNDQKICAgICAgICAg
ICAgICAgIDYxOSBwdGhyZWFkX2NvbmRfd2FpdAogICAgICAgICAgICAgICAgICA2MTkgX3B0aHJl
YWRfY29uZF93YWl0CiAgICAgICAgICAgICAgICAgICAgNjE5IHNlbWFwaG9yZV93YWl0X3NpZ25h
bF90cmFwCiAgICAgICAgICAgICAgICAgICAgICA2MTkgc2VtYXBob3JlX3dhaXRfc2lnbmFsX3Ry
YXAKICAgIDYxOSBUaHJlYWRfNTIwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5
IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgMHgyNDBkZTAzNgogICAgICAgICAgICA2MTkg
Rmxhc2hfRW5mb3JjZUxvY2FsU2VjdXJpdHkKICAgICAgICAgICAgICA2MTkgMHgyNDBkZGM0NAog
ICAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29uZF93YWl0CiAgICAgICAgICAgICAgICAgIDYx
OSBfcHRocmVhZF9jb25kX3dhaXQKICAgICAgICAgICAgICAgICAgICA2MTkgc2VtYXBob3JlX3dh
aXRfc2lnbmFsX3RyYXAKICAgICAgICAgICAgICAgICAgICAgIDYxOSBzZW1hcGhvcmVfd2FpdF9z
aWduYWxfdHJhcAogICAgNjE5IFRocmVhZF81MzAzCiAgICAgIDYxOSB0aHJlYWRfc3RhcnQKICAg
ICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAgIDYxOSAweDI0MGRlMDM2CiAgICAgICAg
ICAgIDYxOSBGbGFzaF9FbmZvcmNlTG9jYWxTZWN1cml0eQogICAgICAgICAgICAgIDYxOSAweDI0
MGRkYzQ0CiAgICAgICAgICAgICAgICA2MTkgcHRocmVhZF9jb25kX3dhaXQKICAgICAgICAgICAg
ICAgICAgNjE5IF9wdGhyZWFkX2NvbmRfd2FpdAogICAgICAgICAgICAgICAgICAgIDYxOSBzZW1h
cGhvcmVfd2FpdF9zaWduYWxfdHJhcAogICAgICAgICAgICAgICAgICAgICAgNjE5IHNlbWFwaG9y
ZV93YWl0X3NpZ25hbF90cmFwCiAgICA2MTkgVGhyZWFkXzU0MDMKICAgICAgNjE5IHRocmVhZF9z
dGFydAogICAgICAgIDYxOSBfcHRocmVhZF9zdGFydAogICAgICAgICAgNjE5IDB4MjQwZGUwMzYK
ICAgICAgICAgICAgNjE5IEZsYXNoX0VuZm9yY2VMb2NhbFNlY3VyaXR5CiAgICAgICAgICAgICAg
NjE5IDB4MjQwZGRjNDQKICAgICAgICAgICAgICAgIDYxOSBwdGhyZWFkX2NvbmRfd2FpdAogICAg
ICAgICAgICAgICAgICA2MTkgX3B0aHJlYWRfY29uZF93YWl0CiAgICAgICAgICAgICAgICAgICAg
NjE5IHNlbWFwaG9yZV93YWl0X3NpZ25hbF90cmFwCiAgICAgICAgICAgICAgICAgICAgICA2MTkg
c2VtYXBob3JlX3dhaXRfc2lnbmFsX3RyYXAKICAgIDYxOSBUaHJlYWRfNTUwMwogICAgICA2MTkg
dGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgICA2MTkgMHgy
NDBkZTAzNgogICAgICAgICAgICA2MTkgRmxhc2hfRW5mb3JjZUxvY2FsU2VjdXJpdHkKICAgICAg
ICAgICAgICA2MTkgMHgyNDBkZGM0NAogICAgICAgICAgICAgICAgNjE5IHB0aHJlYWRfY29uZF93
YWl0CiAgICAgICAgICAgICAgICAgIDYxOSBfcHRocmVhZF9jb25kX3dhaXQKICAgICAgICAgICAg
ICAgICAgICA2MTkgc2VtYXBob3JlX3dhaXRfc2lnbmFsX3RyYXAKICAgICAgICAgICAgICAgICAg
ICAgIDYxOSBzZW1hcGhvcmVfd2FpdF9zaWduYWxfdHJhcAogICAgNjE5IFRocmVhZF81NjAzCiAg
ICAgIDYxOSB0aHJlYWRfc3RhcnQKICAgICAgICA2MTkgX3B0aHJlYWRfc3RhcnQKICAgICAgICAg
IDYxOSAweDI0MGRlMDM2CiAgICAgICAgICAgIDYxOSBGbGFzaF9FbmZvcmNlTG9jYWxTZWN1cml0
eQogICAgICAgICAgICAgIDYxOSAweDI0MGRkYzQ0CiAgICAgICAgICAgICAgICA2MTkgcHRocmVh
ZF9jb25kX3dhaXQKICAgICAgICAgICAgICAgICAgNjE5IF9wdGhyZWFkX2NvbmRfd2FpdAogICAg
ICAgICAgICAgICAgICAgIDYxOSBzZW1hcGhvcmVfd2FpdF9zaWduYWxfdHJhcAogICAgICAgICAg
ICAgICAgICAgICAgNjE5IHNlbWFwaG9yZV93YWl0X3NpZ25hbF90cmFwCiAgICA2MTkgVGhyZWFk
XzU3MDMKICAgICAgNjE5IHRocmVhZF9zdGFydAogICAgICAgIDYxOSBfcHRocmVhZF9zdGFydAog
ICAgICAgICAgNjE5IDB4MjQwZGUwMzYKICAgICAgICAgICAgNjE5IEZsYXNoX0VuZm9yY2VMb2Nh
bFNlY3VyaXR5CiAgICAgICAgICAgICAgNjE5IDB4MjQwZGRjNDQKICAgICAgICAgICAgICAgIDYx
OSBwdGhyZWFkX2NvbmRfd2FpdAogICAgICAgICAgICAgICAgICA2MTkgX3B0aHJlYWRfY29uZF93
YWl0CiAgICAgICAgICAgICAgICAgICAgNjE5IHNlbWFwaG9yZV93YWl0X3NpZ25hbF90cmFwCiAg
ICAgICAgICAgICAgICAgICAgICA2MTkgc2VtYXBob3JlX3dhaXRfc2lnbmFsX3RyYXAKICAgIDYx
OSBUaHJlYWRfNTgwMwogICAgICA2MTkgdGhyZWFkX3N0YXJ0CiAgICAgICAgNjE5IF9wdGhyZWFk
X3N0YXJ0CiAgICAgICAgICA2MTkgMHgyNDBkZTAzNgogICAgICAgICAgICA2MTkgRmxhc2hfRW5m
b3JjZUxvY2FsU2VjdXJpdHkKICAgICAgICAgICAgICA2MTkgMHgyNDBkZGM0NAogICAgICAgICAg
ICAgICAgNjE5IHB0aHJlYWRfY29uZF93YWl0CiAgICAgICAgICAgICAgICAgIDYxOSBfcHRocmVh
ZF9jb25kX3dhaXQKICAgICAgICAgICAgICAgICAgICA2MTkgc2VtYXBob3JlX3dhaXRfc2lnbmFs
X3RyYXAKICAgICAgICAgICAgICAgICAgICAgIDYxOSBzZW1hcGhvcmVfd2FpdF9zaWduYWxfdHJh
cAoKVG90YWwgbnVtYmVyIGluIHN0YWNrIChyZWN1cnNpdmUgY291bnRlZCBtdWx0aXBsZSwgd2hl
biA+PTUpOgogICAgICAgIDQzICAgICAgIF9wdGhyZWFkX3N0YXJ0CiAgICAgICAgNDMgICAgICAg
dGhyZWFkX3N0YXJ0CiAgICAgICAgMjUgICAgICAgX19zZW13YWl0X3NpZ25hbAogICAgICAgIDI1
ICAgICAgIHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzCiAgICAgICAgMTIgICAgICAgX3B0aHJl
YWRfY29uZF93YWl0CiAgICAgICAgMTEgICAgICAgcHRocmVhZF9jb25kX3dhaXQKICAgICAgICAx
MSAgICAgICBzZW1hcGhvcmVfd2FpdF9zaWduYWxfdHJhcAogICAgICAgIDkgICAgICAgRmxhc2hf
RW5mb3JjZUxvY2FsU2VjdXJpdHkKICAgICAgICA4ICAgICAgIDB4MjQwZGRjNDQKICAgICAgICA4
ICAgICAgIDB4MjQwZGUwMzYKICAgICAgICA3ICAgICAgIDB4MAogICAgICAgIDcgICAgICAgQUNF
TVBUaHJlYWQ6OlRhc2soKQogICAgICAgIDcgICAgICAgQ01NQ29udlRhc2sodm9pZCopCiAgICAg
ICAgNyAgICAgICBNUFdhaXRPblF1ZXVlCiAgICAgICAgNyAgICAgICBQcml2YXRlTVBFbnRyeVBv
aW50CiAgICAgICAgNyAgICAgICBUU1dhaXRPbkNvbmRpdGlvbgogICAgICAgIDcgICAgICAgVFNX
YWl0T25Db25kaXRpb25UaW1lZFJlbGF0aXZlCiAgICAgICAgNyAgICAgICBUYXNrR2x1ZQogICAg
ICAgIDcgICAgICAgZmVfZnJhZ21lbnRfdGhyZWFkCiAgICAgICAgNyAgICAgICBwdGhyZWFkU2Vt
YXBob3JlV2FpdCh0X3B0aHJlYWRTZW1hcGhvcmUqKQoKU29ydCBieSB0b3Agb2Ygc3RhY2ssIHNh
bWUgY29sbGFwc2VkICh3aGVuID49IDUpOgogICAgICAgIF9fc2Vtd2FpdF9zaWduYWwgICAgICAg
IDE1NDc1CiAgICAgICAgc2VtYXBob3JlX3dhaXRfc2lnbmFsX3RyYXAgICAgICAgIDY4MDkKICAg
ICAgICAweDAgICAgICAgIDQzMzMKICAgICAgICBtYWNoX21zZ190cmFwICAgICAgICAyNDc2CiAg
ICAgICAgX193b3JrcV9vcHMgICAgICAgIDYxOQogICAgICAgIGtldmVudCAgICAgICAgNjE5CiAg
ICAgICAgc2VsZWN0JERBUldJTl9FWFRTTiAgICAgICAgNjE5CiAgICAgICAgc2VtYXBob3JlX3Rp
bWVkd2FpdF9zaWduYWxfdHJhcCAgICAgICAgNjE5CiAgICAgICAgMHgxNzY0MTQ5ZSAgICAgICAg
ODQKICAgICAgICAweDE3NjQwZjU0ICAgICAgICA2NgogICAgICAgIDB4MTc2NDBmZmIgICAgICAg
IDYwCiAgICAgICAgMHgxNzY0MTM1NCAgICAgICAgNTcKICAgICAgICAweDE3NjQxM2VmICAgICAg
ICA1NQogICAgICAgIDB4MTc2NDBmZWYgICAgICAgIDQ2CiAgICAgICAgMHgxNzY0MTNmYSAgICAg
ICAgNDAKICAgICAgICAweDE3NjQxM2Y0ICAgICAgICAzOQogICAgICAgIDB4MTc2NDE0OTUgICAg
ICAgIDM5CiAgICAgICAgMHgxNzY0MTNmMiAgICAgICAgMzgKICAgICAgICAweDE3NjNmZmYwICAg
ICAgICAyMAogICAgICAgIDB4MTc2NDA0NWEgICAgICAgIDIwCiAgICAgICAgMHgxNzY0MGU4ZSAg
ICAgICAgMTUKICAgICAgICAweDE3NjQwNDkwICAgICAgICAxNAogICAgICAgIDB4MTc2NDA0NWUg
ICAgICAgIDExCiAgICAgICAgMHgxNzY0MGU4MiAgICAgICAgMTEKU2FtcGxlIGFuYWx5c2lzIG9m
IHByb2Nlc3MgNTExNyB3cml0dGVuIHRvIGZpbGUgL2Rldi9zdGRvdXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33160</attachid>
            <date>2009-07-21 02:02:17 -0700</date>
            <delta_ts>2009-07-21 02:02:17 -0700</delta_ts>
            <desc>Use web Worker for syntax highlight</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>18209</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzgzZjQ1Zi4uOWExMjA0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wNy0yMCAgS2Vpc2hpIEhhdHRv
cmkgIDxjYXNleS5oYXR0b3JpQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAxMDAlIENQVSBoYW5nIGZvciBzZXZlcmFsIHNlY29uZHMg
b24gbGFyZ2UgZmlsZSBzeW50YXggaGlnaGxpZ2h0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzMTYKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvSmF2YVNjcmlwdFN5bnRheEhpZ2hsaWdodFdvcmtlci5qc3dvcmtlcjogQWRkZWQuIAor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLnN5bnRheEhpZ2hsaWdodEphdmFzY3Jp
cHQucHJvY2Vzc0N1cnJlbnRMaW5lKTogCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlLnN5bnRheEhpZ2hsaWdodEphdmFzY3JpcHQud29ya2VyLm9ubWVzc2FnZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLnN5bnRheEhpZ2hs
aWdodEphdmFzY3JpcHQud29ya2VyLm9uZXJyb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZS5zeW50YXhIaWdobGlnaHRKYXZhc2NyaXB0KToKKwogMjAwOS0w
Ny0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0phdmFTY3JpcHRTeW50YXhIaWdobGlnaHRXb3JrZXIuanN3b3JrZXIgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFN5bnRheEhpZ2hsaWdodFdvcmtlci5qc3dvcmtlcgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDcwODQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTeW50YXhIaWdobGln
aHRXb3JrZXIuanN3b3JrZXIKQEAgLTAsMCArMSwxNjggQEAKKworZnVuY3Rpb24gY3JlYXRlU3Bh
bihjb250ZW50LCBjbGFzc05hbWUpCit7CisgICAgcmV0dXJuICI8c3BhbiBjbGFzcz1cIiIgKyBj
bGFzc05hbWUgKyAiXCI+IiArIGNvbnRlbnQgKyAiPC9zcGFuPiI7Cit9CisKK3ZhciBDb250aW51
ZVN0YXRlID0geworICAgIE5vbmU6IDAsCisgICAgQ29tbWVudDogMSwKKyAgICBTaW5nbGVRdW90
ZVN0cmluZzogMiwKKyAgICBEb3VibGVRdW90ZVN0cmluZzogMywKKyAgICBSZWdFeHA6IDQKK307
CisKK2Z1bmN0aW9uIHN5bnRheEhpZ2hsaWdodEphdmFzY3JpcHRMaW5lKGNvZGUsIHByZXZDb250
aW51ZVN0YXRlKQoreworICAgIGZ1bmN0aW9uIGdlbmVyYXRlRmluZGVyKHJlZ2V4LCBtYXRjaE51
bWJlciwgY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cikgewor
ICAgICAgICAgICAgdmFyIG1hdGNoID0gcmVnZXguZXhlYyhzdHIpOworICAgICAgICAgICAgaWYg
KCFtYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHByZXZp
b3VzTWF0Y2hMZW5ndGggPSBtYXRjaFttYXRjaE51bWJlcl0ubGVuZ3RoOworICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZVNwYW4obWF0Y2hbbWF0Y2hOdW1iZXJdLCBjbGFzc05hbWUpOworICAgICAg
ICB9OworICAgIH0KKworICAgIHZhciBmaW5kTnVtYmVyID0gZ2VuZXJhdGVGaW5kZXIoL14oLT8o
XGQrXC4/XGQqKFtlRV1bKy1dXGQrKT98MFt4WF1caCt8SW5maW5pdHkpfE5hTikoPzpcV3wkKS8s
IDEsICJ3ZWJraXQtamF2YXNjcmlwdC1udW1iZXIiKTsKKyAgICB2YXIgZmluZEtleXdvcmQgPSBn
ZW5lcmF0ZUZpbmRlcigvXihudWxsfHRydWV8ZmFsc2V8YnJlYWt8Y2FzZXxjYXRjaHxjb25zdHxk
ZWZhdWx0fGZpbmFsbHl8Zm9yfGluc3RhbmNlb2Z8bmV3fHZhcnxjb250aW51ZXxmdW5jdGlvbnxy
ZXR1cm58dm9pZHxkZWxldGV8aWZ8dGhpc3xkb3x3aGlsZXxlbHNlfGlufHN3aXRjaHx0aHJvd3x0
cnl8dHlwZW9mfHdpdGh8ZGVidWdnZXJ8Y2xhc3N8ZW51bXxleHBvcnR8ZXh0ZW5kc3xpbXBvcnR8
c3VwZXJ8Z2V0fHNldCkoPzpcV3wkKS8sIDEsICJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIik7
CisgICAgdmFyIGZpbmRTaW5nbGVMaW5lU3RyaW5nID0gZ2VuZXJhdGVGaW5kZXIoL14iKD86W14i
XFxdfFxcLikqInxeJyhbXidcXF18XFwuKSonLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmlu
ZyIpOyAvLyAiIHRoaXMgcXVvdGUga2VlcHMgWGNvZGUgaGFwcHkKKyAgICB2YXIgZmluZE11bHRp
bGluZUNvbW1lbnRFbmQgPSBnZW5lcmF0ZUZpbmRlcigvXi4qP1wqXC8vLCAwLCAid2Via2l0LWph
dmFzY3JpcHQtY29tbWVudCIpOworICAgIHZhciBmaW5kTXVsdGlsaW5lU2luZ2xlUXVvdGVTdHJp
bmdTdGFydCA9IGdlbmVyYXRlRmluZGVyKC9eJyg/OlteJ1xcXXxcXC4pKlxcJC8sIDAsICJ3ZWJr
aXQtamF2YXNjcmlwdC1zdHJpbmciKTsKKyAgICB2YXIgZmluZE11bHRpbGluZVNpbmdsZVF1b3Rl
U3RyaW5nRW5kID0gZ2VuZXJhdGVGaW5kZXIoL14oPzpbXidcXF18XFwuKSo/Jy8sIDAsICJ3ZWJr
aXQtamF2YXNjcmlwdC1zdHJpbmciKTsKKyAgICB2YXIgZmluZE11bHRpbGluZURvdWJsZVF1b3Rl
U3RyaW5nU3RhcnQgPSBnZW5lcmF0ZUZpbmRlcigvXiIoPzpbXiJcXF18XFwuKSpcXCQvLCAwLCAi
d2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7CisgICAgdmFyIGZpbmRNdWx0aWxpbmVEb3VibGVR
dW90ZVN0cmluZ0VuZCA9IGdlbmVyYXRlRmluZGVyKC9eKD86W14iXFxdfFxcLikqPyIvLCAwLCAi
d2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7CisgICAgdmFyIGZpbmRNdWx0aWxpbmVSZWdFeHBF
bmQgPSBnZW5lcmF0ZUZpbmRlcigvXig/OlteXC9cXF18XFwuKSo/XC8oW2dpbV17MCwzfSkvLCAw
LCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIik7CisKKworICAgIAorICAgIHZhciBfZmluZE11
bHRpbGluZUNvbW1lbnRTdGFydCA9IGdlbmVyYXRlRmluZGVyKC9eXC9cKi4qJC8sIDAsICJ3ZWJr
aXQtamF2YXNjcmlwdC1jb21tZW50Iik7CisgICAgZnVuY3Rpb24gZmluZE11bHRpbGluZUNvbW1l
bnRTdGFydChzdHIpCisgICAgeworICAgICAgICBpZiAoc3RyLnN1YnN0cmluZygwLCAyKSAhPT0g
Ii8qIikKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gX2ZpbmRNdWx0
aWxpbmVDb21tZW50U3RhcnQoc3RyKTsgCisgICAgfQorCisgICAgdmFyIF9maW5kU2luZ2xlTGlu
ZU11bHRpbGluZUNvbW1lbnQgPSBnZW5lcmF0ZUZpbmRlcigvXlwvXCouKlwqXC8vLCAwLCAid2Vi
a2l0LWphdmFzY3JpcHQtY29tbWVudCIpOworICAgIGZ1bmN0aW9uIGZpbmRTaW5nbGVMaW5lTXVs
dGlsaW5lQ29tbWVudChzdHIpCisgICAgeworICAgICAgICBpZiAoc3RyLnN1YnN0cmluZygwLCAy
KSAhPT0gIi8qIikKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gX2Zp
bmRTaW5nbGVMaW5lTXVsdGlsaW5lQ29tbWVudChzdHIpOyAKKyAgICB9CisKKyAgICBmdW5jdGlv
biBmaW5kU2luZ2xlTGluZVNpbmdsZUxpbmVDb21tZW50KHN0cikKKyAgICB7CisgICAgICAgIGlm
IChzdHIuc3Vic3RyaW5nKDAsIDIpICE9PSAiLy8iKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgICAgIHZhciBub2RlID0gY3JlYXRlU3BhbihzdHIsICJ3ZWJraXQtamF2YXNjcmlwdC1j
b21tZW50Iik7CisgICAgICAgIHByZXZpb3VzTWF0Y2hMZW5ndGggPSBzdHIubGVuZ3RoOworICAg
ICAgICByZXR1cm4gbm9kZTsgCisgICAgfQorCisgICAgZnVuY3Rpb24gZmluZE11bHRpbGluZVJl
Z0V4cFN0YXJ0KHN0cikKKyAgICB7CisgICAgICAgIHZhciBtYXRjaCA9IC9eXC8oPzpbXlwvXFxd
fFxcLikqXFwkLy5leGVjKHN0cik7CisgICAgICAgIGlmICghbWF0Y2ggfHwgIS9cXHxcJHxcLltc
P1wqXCtdfFteXHxdXHxbXlx8XS8udGVzdChtYXRjaFswXSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgdmFyIG5vZGUgPSBjcmVhdGVTcGFuKG1hdGNoWzBdLCAid2Via2l0LWph
dmFzY3JpcHQtcmVnZXhwIik7CisgICAgICAgIHByZXZpb3VzTWF0Y2hMZW5ndGggPSBtYXRjaFsw
XS5sZW5ndGg7CisgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZp
bmRTaW5nbGVMaW5lUmVnRXhwKHN0cikKKyAgICB7CisgICAgICAgIHZhciBtYXRjaCA9IC9eKFwv
KD86W15cL1xcXXxcXC4pKlwvKFtnaW1dezAsM30pKShbXlx3XC8+KHtdfFspfV18JCkvLmV4ZWMo
c3RyKTsKKyAgICAgICAgaWYgKCFtYXRjaCB8fCAhKG1hdGNoWzJdLmxlbmd0aCA+IDAgfHwgL1xc
fFwkfFwuW1w/XCpcK118W15cfF1cfFteXHxdLy50ZXN0KG1hdGNoWzFdKSB8fCAvXC58O3wsLy50
ZXN0KG1hdGNoWzNdKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgdmFyIG5v
ZGUgPSBjcmVhdGVTcGFuKG1hdGNoWzFdLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIik7Cisg
ICAgICAgIHByZXZpb3VzTWF0Y2hMZW5ndGggPSBtYXRjaFsxXS5sZW5ndGg7CisgICAgICAgIHJl
dHVybiBub2RlOworICAgIH0KKyAgICAKKyAgICB2YXIgcGFydHMgPSBbXTsKKyAgICB2YXIgdG9r
ZW47CisgICAgdmFyIHRtcCA9IDA7CisgICAgdmFyIGkgPSAwOworICAgIHZhciBwcmV2aW91c01h
dGNoTGVuZ3RoID0gMDsKKyAgICAKKyAgICB2YXIgY29udGludWVTdGF0ZSA9IENvbnRpbnVlU3Rh
dGUuTm9uZTsKKyAgICAKKyAgICBzd2l0Y2ggKHByZXZDb250aW51ZVN0YXRlKSB7CisgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgIGlmICghKHRva2VuID0gZmluZE11bHRpbGluZUNvbW1lbnRF
bmQoY29kZSkpKSB7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBjcmVhdGVTcGFuKGNvZGUsICJ3
ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Iik7CisgICAgICAgICAgICAgICAgY29udGludWVTdGF0
ZSA9IENvbnRpbnVlU3RhdGUuQ29tbWVudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAoISh0b2tlbiA9IGZpbmRNdWx0
aWxpbmVTaW5nbGVRdW90ZVN0cmluZ0VuZChjb2RlKSkpIHsKKyAgICAgICAgICAgICAgICB0b2tl
biA9IGNyZWF0ZVNwYW4oY29kZSwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlU3RhdGUgPSBDb250aW51ZVN0YXRlLlNpbmdsZVF1b3RlU3RyaW5n
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgIGlmICghKHRva2VuID0gZmluZE11bHRpbGluZURvdWJsZVF1b3RlU3RyaW5nRW5k
KGNvZGUpKSkgeworICAgICAgICAgICAgICAgIHRva2VuID0gY3JlYXRlU3Bhbihjb2RlLCAid2Vi
a2l0LWphdmFzY3JpcHQtc3RyaW5nIik7CisgICAgICAgICAgICAgICAgY29udGludWVTdGF0ZSA9
IENvbnRpbnVlU3RhdGUuRG91YmxlUXVvdGVTdHJpbmc7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgaWYgKCEodG9rZW4gPSBm
aW5kTXVsdGlsaW5lUmVnRXhwRW5kKGNvZGUpKSkgeworICAgICAgICAgICAgICAgIHRva2VuID0g
Y3JlYXRlU3Bhbihjb2RlLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIik7CisgICAgICAgICAg
ICAgICAgY29udGludWVTdGF0ZSA9IENvbnRpbnVlU3RhdGUuUmVnRXhwOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmICh0b2tlbikgeworICAg
ICAgICBpICs9IHByZXZpb3VzTWF0Y2hMZW5ndGggPyBwcmV2aW91c01hdGNoTGVuZ3RoIDogY29k
ZS5sZW5ndGg7CisgICAgICAgIHRtcCA9IGk7CisgICAgICAgIHBhcnRzLnB1c2godG9rZW4pOwor
ICAgIH0KKyAgICAKKyAgICBmb3IgKCA7IGkgPCBjb2RlLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHZhciBjb2RlRnJhZ21lbnQgPSBjb2RlLnN1YnN0cihpKTsKKyAgICAgICAgdmFyIHByZXZDaGFy
ID0gY29kZVtpIC0gMV07CisgICAgICAgIHRva2VuID0gZmluZFNpbmdsZUxpbmVTaW5nbGVMaW5l
Q29tbWVudChjb2RlRnJhZ21lbnQpIHx8IGZpbmRTaW5nbGVMaW5lTXVsdGlsaW5lQ29tbWVudChj
b2RlRnJhZ21lbnQpOworICAgICAgICBpZiAoIXRva2VuKSB7CisgICAgICAgICAgICBpZiAoKHRv
a2VuID0gZmluZE11bHRpbGluZUNvbW1lbnRTdGFydChjb2RlRnJhZ21lbnQpKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZVN0YXRlID0gQ29udGludWVTdGF0ZS5Db21tZW50OworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBmaW5kU2luZ2xlTGluZVN0cmluZyhj
b2RlRnJhZ21lbnQpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5kU2luZ2xlTGluZVJl
Z0V4cChjb2RlRnJhZ21lbnQpOworICAgICAgICAgICAgICAgIGlmICghdG9rZW4pIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRva2VuID0gZmluZE11bHRpbGluZVNpbmdsZVF1b3RlU3RyaW5n
U3RhcnQoY29kZUZyYWdtZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlU3Rh
dGUgPSBDb250aW51ZVN0YXRlLlNpbmdsZVF1b3RlU3RyaW5nOworICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmICh0b2tlbiA9IGZpbmRNdWx0aWxpbmVEb3VibGVRdW90ZVN0cmluZ1N0YXJ0KGNv
ZGVGcmFnbWVudCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZVN0YXRlID0gQ29u
dGludWVTdGF0ZS5Eb3VibGVRdW90ZVN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAodG9rZW4gPSBmaW5kTXVsdGlsaW5lUmVnRXhwU3RhcnQoY29kZUZyYWdtZW50KSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlU3RhdGUgPSBDb250aW51ZVN0YXRlLlJlZ0V4cDsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXByZXZDaGFyIHx8IC9eXFcvLnRlc3QocHJl
dkNoYXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBmaW5kTnVtYmVyKGNvZGVG
cmFnbWVudCwgY29kZVtpIC0gMV0pIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5kS2V5
d29yZChjb2RlRnJhZ21lbnQsIGNvZGVbaSAtIDFdKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodG9rZW4pIHsKKyAgICAgICAgICAg
IGlmICh0bXAgIT09IGkpCisgICAgICAgICAgICAgICAgcGFydHMucHVzaChjb2RlLnN1YnN0cmlu
Zyh0bXAsIGkpKTsKKyAgICAgICAgICAgIHBhcnRzLnB1c2godG9rZW4pOworICAgICAgICAgICAg
aSArPSBwcmV2aW91c01hdGNoTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIHRtcCA9IGkgKyAxOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmICh0bXAgPCBjb2RlLmxlbmd0aCkKKyAgICAg
ICAgcGFydHMucHVzaChjb2RlLnN1YnN0cmluZyh0bXAsIGkpKTsKKyAgICAKKyAgICByZXR1cm4g
Y29udGludWVTdGF0ZSArIHBhcnRzLmpvaW4oIiIpOworfQorCitvbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkgeworICAgIHZhciBkYXRhID0gZXZlbnQuZGF0YTsKKyAgICBwb3N0TWVzc2FnZShz
eW50YXhIaWdobGlnaHRKYXZhc2NyaXB0TGluZShkYXRhLnN1YnN0cmluZygxKSwgcGFyc2VJbnQo
ZGF0YS5jaGFyQXQoMCkpKSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IGU2Y2Q1NTUuLjFiYjgz
ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKQEAgLTU0
MywxODkgKzU0Myw0OCBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIXRhYmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0
aW9uIGRlbGV0ZUNvbnRpbnVlRmxhZ3MoY2VsbCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFjZWxsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGRlbGV0ZSBjZWxs
Ll9jb21tZW50Q29udGludWVzOwotICAgICAgICAgICAgZGVsZXRlIGNlbGwuX3NpbmdsZVF1b3Rl
U3RyaW5nQ29udGludWVzOwotICAgICAgICAgICAgZGVsZXRlIGNlbGwuX2RvdWJsZVF1b3RlU3Ry
aW5nQ29udGludWVzOwotICAgICAgICAgICAgZGVsZXRlIGNlbGwuX3JlZ2V4cENvbnRpbnVlczsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVNwYW4oY29udGVudCwgY2xhc3NO
YW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gY2xhc3NOYW1lOwot
ICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250
ZW50KSk7Ci0gICAgICAgICAgICByZXR1cm4gc3BhbjsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIGdlbmVyYXRlRmluZGVyKHJlZ2V4LCBtYXRjaE51bWJlciwgY2xhc3NOYW1lKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oc3RyKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIG1hdGNoID0gcmVnZXguZXhlYyhzdHIpOwotICAgICAgICAgICAgICAgIGlmICghbWF0
Y2gpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgIHBy
ZXZpb3VzTWF0Y2hMZW5ndGggPSBtYXRjaFttYXRjaE51bWJlcl0ubGVuZ3RoOwotICAgICAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVTcGFuKG1hdGNoW21hdGNoTnVtYmVyXSwgY2xhc3NOYW1lKTsK
LSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZmluZE51bWJlciA9IGdl
bmVyYXRlRmluZGVyKC9eKC0/KFxkK1wuP1xkKihbZUVdWystXVxkKyk/fDBbeFhdXGgrfEluZmlu
aXR5KXxOYU4pKD86XFd8JCkvLCAxLCAid2Via2l0LWphdmFzY3JpcHQtbnVtYmVyIik7Ci0gICAg
ICAgIHZhciBmaW5kS2V5d29yZCA9IGdlbmVyYXRlRmluZGVyKC9eKG51bGx8dHJ1ZXxmYWxzZXxi
cmVha3xjYXNlfGNhdGNofGNvbnN0fGRlZmF1bHR8ZmluYWxseXxmb3J8aW5zdGFuY2VvZnxuZXd8
dmFyfGNvbnRpbnVlfGZ1bmN0aW9ufHJldHVybnx2b2lkfGRlbGV0ZXxpZnx0aGlzfGRvfHdoaWxl
fGVsc2V8aW58c3dpdGNofHRocm93fHRyeXx0eXBlb2Z8d2l0aHxkZWJ1Z2dlcnxjbGFzc3xlbnVt
fGV4cG9ydHxleHRlbmRzfGltcG9ydHxzdXBlcnxnZXR8c2V0KSg/OlxXfCQpLywgMSwgIndlYmtp
dC1qYXZhc2NyaXB0LWtleXdvcmQiKTsKLSAgICAgICAgdmFyIGZpbmRTaW5nbGVMaW5lU3RyaW5n
ID0gZ2VuZXJhdGVGaW5kZXIoL14iKD86W14iXFxdfFxcLikqInxeJyhbXidcXF18XFwuKSonLywg
MCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOyAvLyAiIHRoaXMgcXVvdGUga2VlcHMgWGNv
ZGUgaGFwcHkKLSAgICAgICAgdmFyIGZpbmRNdWx0aWxpbmVDb21tZW50U3RhcnQgPSBnZW5lcmF0
ZUZpbmRlcigvXlwvXCouKiQvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpOwotICAg
ICAgICB2YXIgZmluZE11bHRpbGluZUNvbW1lbnRFbmQgPSBnZW5lcmF0ZUZpbmRlcigvXi4qP1wq
XC8vLCAwLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpOwotICAgICAgICB2YXIgZmluZE11
bHRpbGluZVNpbmdsZVF1b3RlU3RyaW5nU3RhcnQgPSBnZW5lcmF0ZUZpbmRlcigvXicoPzpbXidc
XF18XFwuKSpcXCQvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgICAgIHZh
ciBmaW5kTXVsdGlsaW5lU2luZ2xlUXVvdGVTdHJpbmdFbmQgPSBnZW5lcmF0ZUZpbmRlcigvXig/
OlteJ1xcXXxcXC4pKj8nLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgICAg
ICB2YXIgZmluZE11bHRpbGluZURvdWJsZVF1b3RlU3RyaW5nU3RhcnQgPSBnZW5lcmF0ZUZpbmRl
cigvXiIoPzpbXiJcXF18XFwuKSpcXCQvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7
Ci0gICAgICAgIHZhciBmaW5kTXVsdGlsaW5lRG91YmxlUXVvdGVTdHJpbmdFbmQgPSBnZW5lcmF0
ZUZpbmRlcigvXig/OlteIlxcXXxcXC4pKj8iLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmlu
ZyIpOwotICAgICAgICB2YXIgZmluZE11bHRpbGluZVJlZ0V4cEVuZCA9IGdlbmVyYXRlRmluZGVy
KC9eKD86W15cL1xcXXxcXC4pKj9cLyhbZ2ltXXswLDN9KS8sIDAsICJ3ZWJraXQtamF2YXNjcmlw
dC1yZWdleHAiKTsKLSAgICAgICAgdmFyIGZpbmRTaW5nbGVMaW5lQ29tbWVudCA9IGdlbmVyYXRl
RmluZGVyKC9eXC9cLy4qfF5cL1wqLio/XCpcLy8sIDAsICJ3ZWJraXQtamF2YXNjcmlwdC1jb21t
ZW50Iik7Ci0KLSAgICAgICAgZnVuY3Rpb24gZmluZE11bHRpbGluZVJlZ0V4cFN0YXJ0KHN0cikK
LSAgICAgICAgewotICAgICAgICAgICAgdmFyIG1hdGNoID0gL15cLyg/OlteXC9cXF18XFwuKSpc
XCQvLmV4ZWMoc3RyKTsKLSAgICAgICAgICAgIGlmICghbWF0Y2ggfHwgIS9cXHxcJHxcLltcP1wq
XCtdfFteXHxdXHxbXlx8XS8udGVzdChtYXRjaFswXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG51bGw7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IGNyZWF0ZVNwYW4obWF0Y2hbMF0sICJ3ZWJr
aXQtamF2YXNjcmlwdC1yZWdleHAiKTsKLSAgICAgICAgICAgIHByZXZpb3VzTWF0Y2hMZW5ndGgg
PSBtYXRjaFswXS5sZW5ndGg7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGZpbmRTaW5nbGVMaW5lUmVnRXhwKHN0cikKLSAgICAgICAgewot
ICAgICAgICAgICAgdmFyIG1hdGNoID0gL14oXC8oPzpbXlwvXFxdfFxcLikqXC8oW2dpbV17MCwz
fSkpKC4/KS8uZXhlYyhzdHIpOwotICAgICAgICAgICAgaWYgKCFtYXRjaCB8fCAhKG1hdGNoWzJd
Lmxlbmd0aCA+IDAgfHwgL1xcfFwkfFwuW1w/XCpcK118W15cfF1cfFteXHxdLy50ZXN0KG1hdGNo
WzFdKSB8fCAvXC58O3wsLy50ZXN0KG1hdGNoWzNdKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG51bGw7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IGNyZWF0ZVNwYW4obWF0Y2hbMV0sICJ3ZWJr
aXQtamF2YXNjcmlwdC1yZWdleHAiKTsKLSAgICAgICAgICAgIHByZXZpb3VzTWF0Y2hMZW5ndGgg
PSBtYXRjaFsxXS5sZW5ndGg7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIHN5bnRheEhpZ2hsaWdodEphdmFzY3JpcHRMaW5lKGxpbmUsIHBy
ZXZMaW5lKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbWVzc2FnZUJ1YmJsZSA9IGxpbmUu
bGFzdENoaWxkOwotICAgICAgICAgICAgaWYgKG1lc3NhZ2VCdWJibGUgJiYgbWVzc2FnZUJ1YmJs
ZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgbWVzc2FnZUJ1YmJsZS5oYXNTdHls
ZUNsYXNzKCJ3ZWJraXQtaHRtbC1tZXNzYWdlLWJ1YmJsZSIpKQotICAgICAgICAgICAgICAgIGxp
bmUucmVtb3ZlQ2hpbGQobWVzc2FnZUJ1YmJsZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbWVzc2FnZUJ1YmJsZSA9IG51bGw7Ci0KLSAgICAgICAgICAgIHZhciBjb2RlID0g
bGluZS50ZXh0Q29udGVudDsKLQotICAgICAgICAgICAgd2hpbGUgKGxpbmUuZmlyc3RDaGlsZCkK
LSAgICAgICAgICAgICAgICBsaW5lLnJlbW92ZUNoaWxkKGxpbmUuZmlyc3RDaGlsZCk7Ci0KLSAg
ICAgICAgICAgIHZhciB0b2tlbjsKLSAgICAgICAgICAgIHZhciB0bXAgPSAwOwotICAgICAgICAg
ICAgdmFyIGkgPSAwOwotICAgICAgICAgICAgcHJldmlvdXNNYXRjaExlbmd0aCA9IDA7Ci0KLSAg
ICAgICAgICAgIGlmIChwcmV2TGluZSkgewotICAgICAgICAgICAgICAgIGlmIChwcmV2TGluZS5f
Y29tbWVudENvbnRpbnVlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoISh0b2tlbiA9IGZp
bmRNdWx0aWxpbmVDb21tZW50RW5kKGNvZGUpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4gPSBjcmVhdGVTcGFuKGNvZGUsICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lLl9jb21tZW50Q29udGludWVzID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldkxpbmUu
X3NpbmdsZVF1b3RlU3RyaW5nQ29udGludWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
KHRva2VuID0gZmluZE11bHRpbGluZVNpbmdsZVF1b3RlU3RyaW5nRW5kKGNvZGUpKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBjcmVhdGVTcGFuKGNvZGUsICJ3ZWJraXQtamF2
YXNjcmlwdC1zdHJpbmciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuX3NpbmdsZVF1
b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAocHJldkxpbmUuX2RvdWJsZVF1b3RlU3RyaW5nQ29udGludWVz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKHRva2VuID0gZmluZE11bHRpbGluZURvdWJs
ZVF1b3RlU3RyaW5nRW5kKGNvZGUpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4g
PSBjcmVhdGVTcGFuKGNvZGUsICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmUuX2RvdWJsZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldkxp
bmUuX3JlZ2V4cENvbnRpbnVlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoISh0b2tlbiA9
IGZpbmRNdWx0aWxpbmVSZWdFeHBFbmQoY29kZSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0b2tlbiA9IGNyZWF0ZVNwYW4oY29kZSwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5fcmVnZXhwQ29udGludWVzID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAodG9rZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgaSArPSBwcmV2aW91c01hdGNoTGVuZ3Ro
ID8gcHJldmlvdXNNYXRjaExlbmd0aCA6IGNvZGUubGVuZ3RoOwotICAgICAgICAgICAgICAgICAg
ICB0bXAgPSBpOwotICAgICAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZENoaWxkKHRva2VuKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvciAoIDsg
aSA8IGNvZGUubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgY29kZUZyYWdtZW50
ID0gY29kZS5zdWJzdHIoaSk7Ci0gICAgICAgICAgICAgICAgdmFyIHByZXZDaGFyID0gY29kZVtp
IC0gMV07Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBmaW5kU2luZ2xlTGluZUNvbW1lbnQoY29k
ZUZyYWdtZW50KTsKLSAgICAgICAgICAgICAgICBpZiAoIXRva2VuKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICgodG9rZW4gPSBmaW5kTXVsdGlsaW5lQ29tbWVudFN0YXJ0KGNvZGVGcmFnbWVu
dCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5fY29tbWVudENvbnRpbnVlcyA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFwcmV2Q2hhciB8fCAvXlxXLy50ZXN0
KHByZXZDaGFyKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBmaW5kTnVtYmVy
KGNvZGVGcmFnbWVudCwgY29kZVtpIC0gMV0pIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbmRLZXl3b3JkKGNvZGVGcmFnbWVudCwgY29kZVtpIC0gMV0pIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRTaW5nbGVMaW5lU3RyaW5nKGNvZGVGcmFnbWVu
dCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZFNpbmdsZUxpbmVSZWdF
eHAoY29kZUZyYWdtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG9rZW4pIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPSBmaW5kTXVsdGlsaW5lU2lu
Z2xlUXVvdGVTdHJpbmdTdGFydChjb2RlRnJhZ21lbnQpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lLl9zaW5nbGVRdW90ZVN0cmluZ0NvbnRpbnVlcyA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gPSBmaW5kTXVsdGlsaW5lRG91
YmxlUXVvdGVTdHJpbmdTdGFydChjb2RlRnJhZ21lbnQpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lLl9kb3VibGVRdW90ZVN0cmluZ0NvbnRpbnVlcyA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gPSBmaW5kTXVsdGlsaW5lUmVn
RXhwU3RhcnQoY29kZUZyYWdtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGluZS5fcmVnZXhwQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGlmICh0b2tlbikgewotICAgICAgICAgICAgICAgICAgICBpZiAodG1wICE9PSBpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShjb2RlLnN1YnN0cmluZyh0bXAsIGkpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUu
YXBwZW5kQ2hpbGQodG9rZW4pOwotICAgICAgICAgICAgICAgICAgICBpICs9IHByZXZpb3VzTWF0
Y2hMZW5ndGggLSAxOwotICAgICAgICAgICAgICAgICAgICB0bXAgPSBpICsgMTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0bXAgPCBjb2RlLmxl
bmd0aCkKLSAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNvZGUuc3Vic3RyaW5nKHRtcCwgaSkpKTsKLQotICAgICAgICAgICAgaWYgKG1lc3Nh
Z2VCdWJibGUpCi0gICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZChtZXNzYWdlQnViYmxl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgdmFyIHdvcmtlciA9
IG5ldyBXb3JrZXIoIkphdmFTY3JpcHRTeW50YXhIaWdobGlnaHRXb3JrZXIuanN3b3JrZXIiKTsK
KyAgICAgICAgCisgICAgICAgIHZhciBjdXJyZW50TGluZUluZGV4ID0gMDsKICAgICAgICAgdmFy
IHJvd3MgPSB0YWJsZS5yb3dzOwogICAgICAgICB2YXIgcm93c0xlbmd0aCA9IHJvd3MubGVuZ3Ro
OwotICAgICAgICB2YXIgcHJldmlvdXNDZWxsID0gbnVsbDsKICAgICAgICAgdmFyIHByZXZpb3Vz
TWF0Y2hMZW5ndGggPSAwOwogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzOworICAgICAg
ICB2YXIgY29udGludWVTdGF0ZSA9IDA7CisgICAgICAgIHZhciBtZXNzYWdlQnViYmxlID0gbnVs
bDsKIAotICAgICAgICAvLyBTcGxpdCB1cCB0aGUgd29yayBpbnRvIGNodW5rcyBzbyB3ZSBkb24n
dCBibG9jayB0aGUKLSAgICAgICAgLy8gVUkgdGhyZWFkIHdoaWxlIHByb2Nlc3NpbmcuCi0KLSAg
ICAgICAgZnVuY3Rpb24gcHJvY2Vzc0NodW5rKCkKLSAgICAgICAgewotICAgICAgICAgICAgZm9y
ICh2YXIgZW5kID0gTWF0aC5taW4oaSArIDEwLCByb3dzTGVuZ3RoKTsgaSA8IGVuZDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07Ci0gICAgICAgICAgICAgICAgaWYg
KCFyb3cpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHZh
ciBjZWxsID0gcm93LmNlbGxzWzFdOwotICAgICAgICAgICAgICAgIGlmICghY2VsbCkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgc3ludGF4SGlnaGxpZ2h0
SmF2YXNjcmlwdExpbmUoY2VsbCwgcHJldmlvdXNDZWxsKTsKLSAgICAgICAgICAgICAgICBpZiAo
aSA8IChlbmQgLSAxKSkKLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ29udGludWVGbGFncyhw
cmV2aW91c0NlbGwpOwotICAgICAgICAgICAgICAgIHByZXZpb3VzQ2VsbCA9IGNlbGw7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChpID49IHJvd3NMZW5ndGggJiYgcHJvY2Vzc0No
dW5rSW50ZXJ2YWwpIHsKLSAgICAgICAgICAgICAgICBkZWxldGVDb250aW51ZUZsYWdzKHByZXZp
b3VzQ2VsbCk7Ci0gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChwcm9jZXNzQ2h1bmtJbnRl
cnZhbCk7Ci0KLSAgICAgICAgICAgICAgICBzb3VyY2VGcmFtZS5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoInN5bnRheCBoaWdobGlnaHRpbmcgY29tcGxldGUiKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgZnVuY3Rpb24gcHJvY2Vzc0N1cnJlbnRMaW5lKCkgeworICAgICAgICAgICAgdmFyIHJv
dyA9IHJvd3NbY3VycmVudExpbmVJbmRleF07CisgICAgICAgICAgICBpZiAoIXJvdykKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjdXJyZW50TGluZSA9IHJvdy5jZWxsc1sx
XTsKKyAgICAgICAgICAgIGlmICghY3VycmVudExpbmUpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgbWVzc2FnZUJ1YmJsZSA9IGN1cnJlbnRMaW5lLmxhc3RDaGlsZDsKKyAg
ICAgICAgICAgIGlmIChtZXNzYWdlQnViYmxlICYmIG1lc3NhZ2VCdWJibGUubm9kZVR5cGUgPT09
IE5vZGUuRUxFTUVOVF9OT0RFICYmIG1lc3NhZ2VCdWJibGUuaGFzU3R5bGVDbGFzcygid2Via2l0
LWh0bWwtbWVzc2FnZS1idWJibGUiKSkKKyAgICAgICAgICAgICAgICBjdXJyZW50TGluZS5yZW1v
dmVDaGlsZChtZXNzYWdlQnViYmxlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBtZXNzYWdlQnViYmxlID0gbnVsbDsKKyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZShj
b250aW51ZVN0YXRlICsgY3VycmVudExpbmUuaW5uZXJIVE1MKTsKICAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
ICAgICBjb250aW51ZVN0YXRlID0gcGFyc2VJbnQoZXZlbnQuZGF0YS5jaGFyQXQoMCkpOworICAg
ICAgICAgICAgY3VycmVudExpbmUuaW5uZXJIVE1MID0gZXZlbnQuZGF0YS5zdWJzdHJpbmcoMSk7
CisgICAgICAgICAgICBpZiAobWVzc2FnZUJ1YmJsZSkKKyAgICAgICAgICAgICAgICBjdXJyZW50
TGluZS5hcHBlbmRDaGlsZChtZXNzYWdlQnViYmxlKTsKKyAgICAgICAgICAgIGN1cnJlbnRMaW5l
SW5kZXgrKzsKKyAgICAgICAgICAgIGlmIChjdXJyZW50TGluZUluZGV4IDwgcm93c0xlbmd0aCkg
eworICAgICAgICAgICAgICAgIHByb2Nlc3NDdXJyZW50TGluZSgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9OwogCi0gICAgICAgIHByb2Nlc3NDaHVuaygpOwotCi0gICAgICAgIHZhciBwcm9j
ZXNzQ2h1bmtJbnRlcnZhbCA9IHNldEludGVydmFsKHByb2Nlc3NDaHVuaywgMjUpOworICAgICAg
ICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBjb25zb2xl
LmxvZygiV29ya2VyIGVycm9yOiAiICsgZXZlbnQuZGF0YSArICJcbiIpOworICAgICAgICAgICAg
dGhyb3cgZXZlbnQuZGF0YTsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIHByb2Nlc3ND
dXJyZW50TGluZSgpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>