<?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>36839</bug_id>
          
          <creation_ts>2010-03-30 11:13:31 -0700</creation_ts>
          <short_desc>Web Inspector: Adds the ability to get the function symbol name when looking up call location.</short_desc>
          <delta_ts>2010-04-07 14:30:43 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>37196</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter>jaimeyap</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>knorton</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>206080</commentid>
    <comment_count>0</comment_count>
    <who name="">jaimeyap</who>
    <bug_when>2010-03-30 11:13:31 -0700</bug_when>
    <thetext>This patch adds the ability to get the function symbol name when looking up the call location for records sent by the InspectorTimelineAgent.

We are still only getting the top call frame. I would like to follow up with a change to grab the entire call stack, but that may require a bit of refactoring. I am going to talk to Pavel and Yury a bit more before working on that change since it may mean touching Console and ConsoleMessage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206088</commentid>
    <comment_count>1</comment_count>
      <attachid>52060</attachid>
    <who name="">jaimeyap</who>
    <bug_when>2010-03-30 11:28:25 -0700</bug_when>
    <thetext>Created attachment 52060
Path to add function symbol name to call location</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206091</commentid>
    <comment_count>2</comment_count>
      <attachid>52062</attachid>
    <who name="">jaimeyap</who>
    <bug_when>2010-03-30 11:34:11 -0700</bug_when>
    <thetext>Created attachment 52062
Forgot to update ChangeLog for LayoutTests. New patchset with update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206095</commentid>
    <comment_count>3</comment_count>
      <attachid>52060</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-30 12:01:19 -0700</bug_when>
    <thetext>Comment on attachment 52060
Path to add function symbol name to call location

deprecating the first patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206101</commentid>
    <comment_count>4</comment_count>
      <attachid>52062</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-30 12:13:01 -0700</bug_when>
    <thetext>Comment on attachment 52062
Forgot to update ChangeLog for LayoutTests. New patchset with update.

&gt; -    if (!V8Proxy::sourceName(*sourceName) || !V8Proxy::sourceLineNumber(*sourceLineNumber))
&gt; +    if (!V8Proxy::sourceName(*sourceName) || !V8Proxy::sourceLineNumber(*sourceLineNumber) || !V8Proxy::funcName(*funcName))

This looks very inefficient - we should try fetching all at a time.

&gt; +    DEFINE_STATIC_LOCAL(const char*, frameSourceLine,
&gt;          (&quot;function frameSourceLine(exec_state) {&quot;
&gt;          &quot;  return exec_state.frame(0).sourceLine();&quot;

This looks like a very old WebKit. Recent ones require  checks for frame count.

&gt; +bool V8Proxy::funcName(String&amp; result)
&gt; +{

I think we are going to have a bunch of methods like this and I am not sure we should put them into V8Proxy. There is a nice new ScriptDebugServer class in bindings that abstracts us from JS engine. It is nearly blank now, but we are working on filling it. I think all three methods should be defined there and it should own the utility context business as a whole. It would give us more flexibility and we&apos;ll be able to fetch all the info you need within single call (such as top stack frames, etc.). We should move ScriptCallStack::callLocation there as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208480</commentid>
    <comment_count>5</comment_count>
    <who name="">jaimeyap</who>
    <bug_when>2010-04-05 08:07:34 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 52062 [details])
&gt; &gt; -    if (!V8Proxy::sourceName(*sourceName) || !V8Proxy::sourceLineNumber(*sourceLineNumber))
&gt; &gt; +    if (!V8Proxy::sourceName(*sourceName) || !V8Proxy::sourceLineNumber(*sourceLineNumber) || !V8Proxy::funcName(*funcName))
&gt; 
&gt; This looks very inefficient - we should try fetching all at a time.
&gt; 
&gt; &gt; +    DEFINE_STATIC_LOCAL(const char*, frameSourceLine,
&gt; &gt;          (&quot;function frameSourceLine(exec_state) {&quot;
&gt; &gt;          &quot;  return exec_state.frame(0).sourceLine();&quot;
&gt; 
&gt; This looks like a very old WebKit. Recent ones require  checks for frame count.
&gt; 
&gt; &gt; +bool V8Proxy::funcName(String&amp; result)
&gt; &gt; +{
&gt; 
&gt; I think we are going to have a bunch of methods like this and I am not sure we
&gt; should put them into V8Proxy. There is a nice new ScriptDebugServer class in
&gt; bindings that abstracts us from JS engine. It is nearly blank now, but we are
&gt; working on filling it. I think all three methods should be defined there and it
&gt; should own the utility context business as a whole. It would give us more
&gt; flexibility and we&apos;ll be able to fetch all the info you need within single call
&gt; (such as top stack frames, etc.). We should move ScriptCallStack::callLocation
&gt; there as well.

This sounds good. Do you want me to refactor this to fetch everything in a single call in this patch?

I believe that returning a single JavaScript object would mean that we need to make the StackFrame information opaque to C++... or else we will have a fairly unmaintainable change cross platform.

ScriptCallStack and ScriptCallFrame both have API that expose the stack frame information in C++ land. This gets more complicated since Console and ConsoleMessage depend on being able to read this information in C++ when talking to the Inspector.

I am interested in your opinion on what this refactor should look like. Should I also ping Yurys?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209075</commentid>
    <comment_count>6</comment_count>
      <attachid>52645</attachid>
    <who name="">jaimeyap</who>
    <bug_when>2010-04-06 09:33:04 -0700</bug_when>
    <thetext>Created attachment 52645
Updated patchset according to Pavel&apos;s suggestions

Moves ownership of the utility context from V8Proxy to ScriptDebugServer.

Adds the ability to grab the function name for the top call frame. Also refactors such that we only enter the utility context once to get the line number, script name, and function name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209086</commentid>
    <comment_count>7</comment_count>
      <attachid>52645</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-06 09:57:05 -0700</bug_when>
    <thetext>Comment on attachment 52645
Updated patchset according to Pavel&apos;s suggestions

&gt; +    // Compile JavaScript function for retrieving the source line, the source
&gt; +    // name and the symbol name for the top JavaScript stack frame.
&gt; +    DEFINE_STATIC_LOCAL(const char*, lastCallFrame,
&gt; +        (&quot;function lastCallFrame(exec_state) {&quot;
&gt; +        &quot;  var frame = exec_state.frame(0);&quot;
Please check that the stack is not empty before accessing first frame. TOT WebKit already contains exec_state.frameCount() check, it seem that you copy needs update.

&gt; +    
&gt; +    // Function for retrieving the source name, line number and function name for the top
&gt; +    // JavaScript stack frame.
&gt; +    //
&gt; +    // It will return true if the caller information was successfully retrieved and written
&gt; +    // into the function parameters, otherwise the function will return false. It may
&gt; +    // fail due to a stck overflow in the underlying JavaScript implentation, handling
&gt; +    // of such exception is up to the caller.
&gt; +    static bool lastCallFrame(String&amp; sourceName, int&amp; lineNumber, String&amp; funcName);
&gt;  
Consider naming it topCallFrame.


Please add frameCount check, otherwise r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209161</commentid>
    <comment_count>8</comment_count>
      <attachid>52655</attachid>
    <who name="">jaimeyap</who>
    <bug_when>2010-04-06 11:59:48 -0700</bug_when>
    <thetext>Created attachment 52655
Merging up to r. 57156 and adding guard for frameCount.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209162</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-06 12:00:59 -0700</bug_when>
    <thetext>Attachment 52655 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/ScriptDebugServer.h:96:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/ScriptDebugServer.h:99:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209249</commentid>
    <comment_count>10</comment_count>
      <attachid>52668</attachid>
    <who name="">jaimeyap</who>
    <bug_when>2010-04-06 14:36:26 -0700</bug_when>
    <thetext>Created attachment 52668
Renamed stuff according to feedback. Fixed WebKit style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209489</commentid>
    <comment_count>11</comment_count>
      <attachid>52668</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-06 23:52:04 -0700</bug_when>
    <thetext>Comment on attachment 52668
Renamed stuff according to feedback. Fixed WebKit style issues.

Looks good. Next time when you&apos;re uploading updated patch please mark previous one as obsolete if it doesn&apos;t require further review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209500</commentid>
    <comment_count>12</comment_count>
      <attachid>52668</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-07 00:20:17 -0700</bug_when>
    <thetext>Comment on attachment 52668
Renamed stuff according to feedback. Fixed WebKit style issues.

Clearing flags on attachment: 52668

Committed r57196: &lt;http://trac.webkit.org/changeset/57196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209501</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-07 00:20:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209580</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-07 05:00:50 -0700</bug_when>
    <thetext>Reopening since the patch was rolled out due to layout test failure in Chromium(https://bugs.webkit.org/show_bug.cgi?id=37196).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209789</commentid>
    <comment_count>15</comment_count>
      <attachid>52773</attachid>
    <who name="">jaimeyap</who>
    <bug_when>2010-04-07 12:53:19 -0700</bug_when>
    <thetext>Created attachment 52773
Fixes layout test failures.

This patch includes the fixes for the inspector layout tests submitted in https://bugs.webkit.org/show_bug.cgi?id=37192.

I have also resolved the plugin layout test failures that were a result of returning failure when there was no JS on the call stack. The old code that used to live in V8Proxy would return success and set the line number to 0 and the source name to &quot;undefined&quot;. I have adjusted this change to match those semantics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209820</commentid>
    <comment_count>16</comment_count>
      <attachid>52773</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-07 13:57:11 -0700</bug_when>
    <thetext>Comment on attachment 52773
Fixes layout test failures.

Rejecting patch 52773 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 12639 test cases.
fast/canvas/webgl/index-validation-copies-indices.html -&gt; failed

Exiting early after 1 failures. 5081 tests run.
105.15s total testing time

5080 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/1666215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209821</commentid>
    <comment_count>17</comment_count>
      <attachid>52773</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-07 13:59:58 -0700</bug_when>
    <thetext>Comment on attachment 52773
Fixes layout test failures.

Flaky test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209835</commentid>
    <comment_count>18</comment_count>
      <attachid>52773</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-07 14:21:00 -0700</bug_when>
    <thetext>Comment on attachment 52773
Fixes layout test failures.

Clearing flags on attachment: 52773

Committed r57231: &lt;http://trac.webkit.org/changeset/57231&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209837</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-07 14:21:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209845</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-07 14:30:43 -0700</bug_when>
    <thetext>*** Bug 37192 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52060</attachid>
            <date>2010-03-30 11:28:25 -0700</date>
            <delta_ts>2010-03-30 12:01:19 -0700</delta_ts>
            <desc>Path to add function symbol name to call location</desc>
            <filename>func-sym.patch</filename>
            <type>text/plain</type>
            <size>10051</size>
            <attacher>jaimeyap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjgwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDMtMzAgIEphaW1lIFlhcCAgPGphaW1leWFwQGdvb2dsZS5j
b20+CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
dGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBmdW5jdGlvbiBzeW1ib2wgbmFtZSB3aGVuIGxvb2tpbmcg
dXAgdGhlIGNhbGwgbG9jYXRpb24KKyAgICAgICAgZm9yIHJlY29yZHMgc2VudCBieSB0aGUgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2ODM5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
YWxsU3RhY2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6Y3JlYXRlVXRpbGl0eUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhQcm94eTo6ZnVuY05hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
UHJveHkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1Jl
Y29yZCk6CisKIDIwMTAtMDMtMzAgIEFkYW0gTGFuZ2xleSAgPGFnbEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2suY3BwCShyZXZpc2lvbiA1NjEyNCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgU2NyaXB0Q2FsbFN0YWNrOjppbml0aWFsaXplKCkKICAgICBtX2luaXRpYWxpemVk
ID0gdHJ1ZTsKIH0KIAotYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcq
LCBpbnQqKQorYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcqLCBpbnQq
LCBTdHJpbmcqKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2suaAkocmV2aXNpb24gNTYxMjQpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gZnJhbWUgcmV0cmlldmFsIG1ldGhvZHMKICAg
ICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZhdCh1bnNpZ25lZCk7CiAgICAgICAgIHVuc2ln
bmVkIHNpemUoKTsKLSAgICAgICAgc3RhdGljIGJvb2wgY2FsbExvY2F0aW9uKFN0cmluZyosIGlu
dCopOworICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiwgaW50KiwgU3Ry
aW5nKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDU2MTI0KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MywyMSArNDMsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0Q2FsbFN0YWNr
KiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMs
IHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KSB7CiAgICAgU3RyaW5nIHNvdXJjZU5hbWU7CiAg
ICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgaWYgKCFjYWxsTG9jYXRpb24oJnNvdXJjZU5h
bWUsICZzb3VyY2VMaW5lTnVtYmVyKSkKKyAgICBTdHJpbmcgZnVuY05hbWU7CisgICAgaWYgKCFj
YWxsTG9jYXRpb24oJnNvdXJjZU5hbWUsICZzb3VyY2VMaW5lTnVtYmVyLCAmZnVuY05hbWUpKQog
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soYXJndW1lbnRz
LCBza2lwQXJndW1lbnRDb3VudCwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlcik7CisgICAg
cmV0dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCwg
c291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgZnVuY05hbWUpOwogfQogCi1ib29sIFNjcmlw
dENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKFN0cmluZyogc291cmNlTmFtZSwgaW50KiBzb3VyY2VM
aW5lTnVtYmVyKQorYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcqIHNv
dXJjZU5hbWUsIGludCogc291cmNlTGluZU51bWJlciwgU3RyaW5nKiBmdW5jTmFtZSkKIHsKLSAg
ICBpZiAoIVY4UHJveHk6OnNvdXJjZU5hbWUoKnNvdXJjZU5hbWUpIHx8ICFWOFByb3h5Ojpzb3Vy
Y2VMaW5lTnVtYmVyKCpzb3VyY2VMaW5lTnVtYmVyKSkKKyAgICBpZiAoIVY4UHJveHk6OnNvdXJj
ZU5hbWUoKnNvdXJjZU5hbWUpIHx8ICFWOFByb3h5Ojpzb3VyY2VMaW5lTnVtYmVyKCpzb3VyY2VM
aW5lTnVtYmVyKSB8fCAhVjhQcm94eTo6ZnVuY05hbWUoKmZ1bmNOYW1lKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICpzb3VyY2VMaW5lTnVtYmVyICs9IDE7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIFN0cmluZyBzb3VyY2VO
YW1lLCBpbnQgc291cmNlTGluZU51bWJlcikKLSAgICA6IG1fbGFzdENhbGxlcihTdHJpbmcoKSwg
c291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3Vu
dCkKK1NjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIFN0cmluZyBzb3VyY2VOYW1l
LCBpbnQgc291cmNlTGluZU51bWJlciwgU3RyaW5nIGZ1bmNOYW1lKQorICAgIDogbV9sYXN0Q2Fs
bGVyKGZ1bmNOYW1lLCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyLCBhcmd1bWVudHMsIHNr
aXBBcmd1bWVudENvdW50KQogICAgICwgbV9zY3JpcHRTdGF0ZShTY3JpcHRTdGF0ZTo6Y3VycmVu
dCgpKQogewogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCShyZXZp
c2lvbiA1NjEyNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgU2NyaXB0Q2FsbFN0YWNrKiBjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYsIHVu
c2lnbmVkIHNraXBBcmd1bWVudENvdW50ID0gMCk7CiAgICAgICAgIH5TY3JpcHRDYWxsU3RhY2so
KTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1l
LCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIpOworICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRp
b24oU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVu
Y05hbWUpOwogCiAgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgYXQodW5zaWduZWQpIGNv
bnN0OwogICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJldHJpZXZpbmcgYW5kIHN0b3Jpbmcg
Y2FsbCBzdGFjayB0cmFjZQpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFNjcmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0
U3RhdGU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNjcmlwdENhbGxTdGFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBTdHJp
bmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIpOworICAgICAgICBTY3JpcHRDYWxs
U3RhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1l
bnRDb3VudCwgU3RyaW5nIHNvdXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyLCBTdHJpbmcg
ZnVuY05hbWUpOwogICAgIAogICAgICAgICBTY3JpcHRDYWxsRnJhbWUgbV9sYXN0Q2FsbGVyOwog
ICAgICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcAkocmV2aXNpb24gNTYxMjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjQsMTUgKzc2NCwxNSBAQCB2b2lkIFY4UHJveHk6OmNy
ZWF0ZVV0aWxpdHlDb250ZXh0KCkKIAogICAgIC8vIENvbXBpbGUgSmF2YVNjcmlwdCBmdW5jdGlv
biBmb3IgcmV0cmlldmluZyB0aGUgc291cmNlIGxpbmUgb2YgdGhlIHRvcAogICAgIC8vIEphdmFT
Y3JpcHQgc3RhY2sgZnJhbWUuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBjaGFyKiwg
ZnJhbWVTb3VyY2VMaW5lU291cmNlLAorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hh
ciosIGZyYW1lU291cmNlTGluZSwKICAgICAgICAgKCJmdW5jdGlvbiBmcmFtZVNvdXJjZUxpbmUo
ZXhlY19zdGF0ZSkgeyIKICAgICAgICAgIiAgcmV0dXJuIGV4ZWNfc3RhdGUuZnJhbWUoMCkuc291
cmNlTGluZSgpOyIKICAgICAgICAgIn0iKSk7Ci0gICAgdjg6OlNjcmlwdDo6Q29tcGlsZSh2ODo6
U3RyaW5nOjpOZXcoZnJhbWVTb3VyY2VMaW5lU291cmNlKSktPlJ1bigpOworICAgIHY4OjpTY3Jp
cHQ6OkNvbXBpbGUodjg6OlN0cmluZzo6TmV3KGZyYW1lU291cmNlTGluZSkpLT5SdW4oKTsKIAog
ICAgIC8vIENvbXBpbGUgSmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgc291
cmNlIG5hbWUgb2YgdGhlIHRvcAogICAgIC8vIEphdmFTY3JpcHQgc3RhY2sgZnJhbWUuCi0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBjaGFyKiwgZnJhbWVTb3VyY2VOYW1lU291cmNlLAor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhciosIGZyYW1lU291cmNlTmFtZSwKICAg
ICAgICAgKCJmdW5jdGlvbiBmcmFtZVNvdXJjZU5hbWUoZXhlY19zdGF0ZSkgeyIKICAgICAgICAg
IiAgdmFyIGZyYW1lID0gZXhlY19zdGF0ZS5mcmFtZSgwKTsiCiAgICAgICAgICIgIGlmIChmcmFt
ZS5mdW5jKCkucmVzb2x2ZWQoKSAmJiAiCkBAIC03ODEsNyArNzgxLDE2IEBAIHZvaWQgVjhQcm94
eTo6Y3JlYXRlVXRpbGl0eUNvbnRleHQoKQogICAgICAgICAiICAgIHJldHVybiBmcmFtZS5mdW5j
KCkuc2NyaXB0KCkubmFtZSgpOyIKICAgICAgICAgIiAgfSIKICAgICAgICAgIn0iKSk7Ci0gICAg
djg6OlNjcmlwdDo6Q29tcGlsZSh2ODo6U3RyaW5nOjpOZXcoZnJhbWVTb3VyY2VOYW1lU291cmNl
KSktPlJ1bigpOworICAgIHY4OjpTY3JpcHQ6OkNvbXBpbGUodjg6OlN0cmluZzo6TmV3KGZyYW1l
U291cmNlTmFtZSkpLT5SdW4oKTsKKworICAgIC8vIENvbXBpbGUgSmF2YVNjcmlwdCBmdW5jdGlv
biBmb3IgcmV0cmlldmluZyB0aGUgc3ltYm9sIG5hbWUgZm9yIHRoZQorICAgIC8vIHRvcCBKYXZh
U2NyaXB0IHN0YWNrIGZyYW1lLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhcios
IGZyYW1lRnVuY05hbWUsCisgICAgICAgICgiZnVuY3Rpb24gZnJhbWVGdW5jTmFtZShleGVjX3N0
YXRlKSB7IgorICAgICAgICAiICB2YXIgZnVuYyA9IGV4ZWNfc3RhdGUuZnJhbWUoMCkuZnVuYygp
OyIKKyAgICAgICAgIiAgcmV0dXJuIGZ1bmMubmFtZSgpIHx8IGZ1bmMuaW5mZXJyZWROYW1lKCk7
IgorICAgICAgICAifSIpKTsKKyAgICB2ODo6U2NyaXB0OjpDb21waWxlKHY4OjpTdHJpbmc6Ok5l
dyhmcmFtZUZ1bmNOYW1lKSktPlJ1bigpOwogfQogCiBib29sIFY4UHJveHk6OnNvdXJjZUxpbmVO
dW1iZXIoaW50JiByZXN1bHQpCkBAIC04MDIsNiArODExLDI0IEBAIGJvb2wgVjhQcm94eTo6c291
cmNlTGluZU51bWJlcihpbnQmIHJlc3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWOFBy
b3h5OjpmdW5jTmFtZShTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2Nv
cGU7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhVdGlsaXR5Q29udGV4dCA9IHV0aWxp
dHlDb250ZXh0KCk7CisgICAgaWYgKHY4VXRpbGl0eUNvbnRleHQuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2OFV0
aWxpdHlDb250ZXh0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnJhbWVGdW5jTmFt
ZTsKKyAgICBmcmFtZUZ1bmNOYW1lID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QodjhV
dGlsaXR5Q29udGV4dC0+R2xvYmFsKCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImZyYW1lRnVuY05h
bWUiKSkpOworICAgIGlmIChmcmFtZUZ1bmNOYW1lLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IHY4OjpEZWJ1Zzo6Q2Fs
bChmcmFtZUZ1bmNOYW1lKTsKKyAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmVzdWx0ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogYm9vbCBWOFByb3h5Ojpzb3VyY2VOYW1lKFN0cmluZyYgcmVzdWx0KQog
ewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShy
ZXZpc2lvbiA1NjEyNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDUsNiArMzA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBvZiBzdWNoIGV4Y2VwdGlvbiBpcyB1cCB0byB0aGUgY2FsbGVyLgogICAgICAgICBzdGF0aWMg
Ym9vbCBzb3VyY2VMaW5lTnVtYmVyKGludCYgcmVzdWx0KTsKICAgICAgICAgc3RhdGljIGJvb2wg
c291cmNlTmFtZShTdHJpbmcmIHJlc3VsdCk7CisgICAgICAgIHN0YXRpYyBib29sIGZ1bmNOYW1l
KFN0cmluZyYgcmVzdWx0KTsKIAogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRl
eHQoKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtYWluV29ybGRDb250ZXh0KCk7
CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAJKHJl
dmlzaW9uIDU2MTI0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsMTEgQEAgU2NyaXB0T2JqZWN0IFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYQogCiAgICAgU3RyaW5nIHNvdXJjZU5hbWU7CiAgICAgaW50
IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgaWYgKFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9u
KCZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlcikgJiYgc291cmNlTmFtZSAhPSAidW5kZWZp
bmVkIikgeworICAgIFN0cmluZyBmdW5jTmFtZTsKKyAgICBpZiAoU2NyaXB0Q2FsbFN0YWNrOjpj
YWxsTG9jYXRpb24oJnNvdXJjZU5hbWUsICZzb3VyY2VMaW5lTnVtYmVyLCAmZnVuY05hbWUpICYm
IHNvdXJjZU5hbWUgIT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgcmVjb3JkLnNldCgiY2FsbGVy
U2NyaXB0TmFtZSIsIHNvdXJjZU5hbWUpOwogICAgICAgICByZWNvcmQuc2V0KCJjYWxsZXJTY3Jp
cHRMaW5lIiwgc291cmNlTGluZU51bWJlcik7CisgICAgICAgIHJlY29yZC5zZXQoImNhbGxlckZ1
bmNOYW1lIiwgZnVuY05hbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVjb3JkOwogfQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTY4MDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMSBAQAorMjAxMC0wMy0zMCAgSmFpbWUgWWFwICA8amFpbWV5YXBAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAg
ICogaW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanM6CisKIDIwMTAtMDMtMzAgIEFkYW0gTGFuZ2xl
eSAgPGFnbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4u
CkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcwkocmV2aXNpb24gNTYx
MjQpCisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMTAsNiArMTAsNyBAQCB2YXIgdGltZWxpbmVOb25EZXRlcm1pbmlzdGljUHJvcHMg
PSB7IAogICAgIHdpZHRoIDogMSwKICAgICBjYWxsZXJTY3JpcHROYW1lOiAxLAogICAgIGNhbGxl
clNjcmlwdExpbmU6IDEsCisgICAgY2FsbGVyRnVuY05hbWU6IDEsCiAgICAgdXJsIDogMSwKICAg
ICBtaW1lVHlwZSA6IDEKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52062</attachid>
            <date>2010-03-30 11:34:11 -0700</date>
            <delta_ts>2010-04-06 23:52:19 -0700</delta_ts>
            <desc>Forgot to update ChangeLog for LayoutTests. New patchset with update.</desc>
            <filename>func-sym2.patch</filename>
            <type>text/plain</type>
            <size>10159</size>
            <attacher>jaimeyap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjgwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDMtMzAgIEphaW1lIFlhcCAgPGphaW1leWFwQGdvb2dsZS5j
b20+CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
dGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBmdW5jdGlvbiBzeW1ib2wgbmFtZSB3aGVuIGxvb2tpbmcg
dXAgdGhlIGNhbGwgbG9jYXRpb24KKyAgICAgICAgZm9yIHJlY29yZHMgc2VudCBieSB0aGUgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2ODM5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
YWxsU3RhY2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6Y3JlYXRlVXRpbGl0eUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhQcm94eTo6ZnVuY05hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
UHJveHkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1Jl
Y29yZCk6CisKIDIwMTAtMDMtMzAgIEFkYW0gTGFuZ2xleSAgPGFnbEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2suY3BwCShyZXZpc2lvbiA1NjEyNCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgU2NyaXB0Q2FsbFN0YWNrOjppbml0aWFsaXplKCkKICAgICBtX2luaXRpYWxpemVk
ID0gdHJ1ZTsKIH0KIAotYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcq
LCBpbnQqKQorYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcqLCBpbnQq
LCBTdHJpbmcqKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2suaAkocmV2aXNpb24gNTYxMjQpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gZnJhbWUgcmV0cmlldmFsIG1ldGhvZHMKICAg
ICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZhdCh1bnNpZ25lZCk7CiAgICAgICAgIHVuc2ln
bmVkIHNpemUoKTsKLSAgICAgICAgc3RhdGljIGJvb2wgY2FsbExvY2F0aW9uKFN0cmluZyosIGlu
dCopOworICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiwgaW50KiwgU3Ry
aW5nKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDU2MTI0KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MywyMSArNDMsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0Q2FsbFN0YWNr
KiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMs
IHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KSB7CiAgICAgU3RyaW5nIHNvdXJjZU5hbWU7CiAg
ICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgaWYgKCFjYWxsTG9jYXRpb24oJnNvdXJjZU5h
bWUsICZzb3VyY2VMaW5lTnVtYmVyKSkKKyAgICBTdHJpbmcgZnVuY05hbWU7CisgICAgaWYgKCFj
YWxsTG9jYXRpb24oJnNvdXJjZU5hbWUsICZzb3VyY2VMaW5lTnVtYmVyLCAmZnVuY05hbWUpKQog
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soYXJndW1lbnRz
LCBza2lwQXJndW1lbnRDb3VudCwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlcik7CisgICAg
cmV0dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCwg
c291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgZnVuY05hbWUpOwogfQogCi1ib29sIFNjcmlw
dENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKFN0cmluZyogc291cmNlTmFtZSwgaW50KiBzb3VyY2VM
aW5lTnVtYmVyKQorYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcqIHNv
dXJjZU5hbWUsIGludCogc291cmNlTGluZU51bWJlciwgU3RyaW5nKiBmdW5jTmFtZSkKIHsKLSAg
ICBpZiAoIVY4UHJveHk6OnNvdXJjZU5hbWUoKnNvdXJjZU5hbWUpIHx8ICFWOFByb3h5Ojpzb3Vy
Y2VMaW5lTnVtYmVyKCpzb3VyY2VMaW5lTnVtYmVyKSkKKyAgICBpZiAoIVY4UHJveHk6OnNvdXJj
ZU5hbWUoKnNvdXJjZU5hbWUpIHx8ICFWOFByb3h5Ojpzb3VyY2VMaW5lTnVtYmVyKCpzb3VyY2VM
aW5lTnVtYmVyKSB8fCAhVjhQcm94eTo6ZnVuY05hbWUoKmZ1bmNOYW1lKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICpzb3VyY2VMaW5lTnVtYmVyICs9IDE7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIFN0cmluZyBzb3VyY2VO
YW1lLCBpbnQgc291cmNlTGluZU51bWJlcikKLSAgICA6IG1fbGFzdENhbGxlcihTdHJpbmcoKSwg
c291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3Vu
dCkKK1NjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIFN0cmluZyBzb3VyY2VOYW1l
LCBpbnQgc291cmNlTGluZU51bWJlciwgU3RyaW5nIGZ1bmNOYW1lKQorICAgIDogbV9sYXN0Q2Fs
bGVyKGZ1bmNOYW1lLCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyLCBhcmd1bWVudHMsIHNr
aXBBcmd1bWVudENvdW50KQogICAgICwgbV9zY3JpcHRTdGF0ZShTY3JpcHRTdGF0ZTo6Y3VycmVu
dCgpKQogewogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCShyZXZp
c2lvbiA1NjEyNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgU2NyaXB0Q2FsbFN0YWNrKiBjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYsIHVu
c2lnbmVkIHNraXBBcmd1bWVudENvdW50ID0gMCk7CiAgICAgICAgIH5TY3JpcHRDYWxsU3RhY2so
KTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1l
LCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIpOworICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRp
b24oU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVu
Y05hbWUpOwogCiAgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgYXQodW5zaWduZWQpIGNv
bnN0OwogICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJldHJpZXZpbmcgYW5kIHN0b3Jpbmcg
Y2FsbCBzdGFjayB0cmFjZQpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFNjcmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0
U3RhdGU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNjcmlwdENhbGxTdGFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBTdHJp
bmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIpOworICAgICAgICBTY3JpcHRDYWxs
U3RhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1l
bnRDb3VudCwgU3RyaW5nIHNvdXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyLCBTdHJpbmcg
ZnVuY05hbWUpOwogICAgIAogICAgICAgICBTY3JpcHRDYWxsRnJhbWUgbV9sYXN0Q2FsbGVyOwog
ICAgICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcAkocmV2aXNpb24gNTYxMjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjQsMTUgKzc2NCwxNSBAQCB2b2lkIFY4UHJveHk6OmNy
ZWF0ZVV0aWxpdHlDb250ZXh0KCkKIAogICAgIC8vIENvbXBpbGUgSmF2YVNjcmlwdCBmdW5jdGlv
biBmb3IgcmV0cmlldmluZyB0aGUgc291cmNlIGxpbmUgb2YgdGhlIHRvcAogICAgIC8vIEphdmFT
Y3JpcHQgc3RhY2sgZnJhbWUuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBjaGFyKiwg
ZnJhbWVTb3VyY2VMaW5lU291cmNlLAorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hh
ciosIGZyYW1lU291cmNlTGluZSwKICAgICAgICAgKCJmdW5jdGlvbiBmcmFtZVNvdXJjZUxpbmUo
ZXhlY19zdGF0ZSkgeyIKICAgICAgICAgIiAgcmV0dXJuIGV4ZWNfc3RhdGUuZnJhbWUoMCkuc291
cmNlTGluZSgpOyIKICAgICAgICAgIn0iKSk7Ci0gICAgdjg6OlNjcmlwdDo6Q29tcGlsZSh2ODo6
U3RyaW5nOjpOZXcoZnJhbWVTb3VyY2VMaW5lU291cmNlKSktPlJ1bigpOworICAgIHY4OjpTY3Jp
cHQ6OkNvbXBpbGUodjg6OlN0cmluZzo6TmV3KGZyYW1lU291cmNlTGluZSkpLT5SdW4oKTsKIAog
ICAgIC8vIENvbXBpbGUgSmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgc291
cmNlIG5hbWUgb2YgdGhlIHRvcAogICAgIC8vIEphdmFTY3JpcHQgc3RhY2sgZnJhbWUuCi0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBjaGFyKiwgZnJhbWVTb3VyY2VOYW1lU291cmNlLAor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhciosIGZyYW1lU291cmNlTmFtZSwKICAg
ICAgICAgKCJmdW5jdGlvbiBmcmFtZVNvdXJjZU5hbWUoZXhlY19zdGF0ZSkgeyIKICAgICAgICAg
IiAgdmFyIGZyYW1lID0gZXhlY19zdGF0ZS5mcmFtZSgwKTsiCiAgICAgICAgICIgIGlmIChmcmFt
ZS5mdW5jKCkucmVzb2x2ZWQoKSAmJiAiCkBAIC03ODEsNyArNzgxLDE2IEBAIHZvaWQgVjhQcm94
eTo6Y3JlYXRlVXRpbGl0eUNvbnRleHQoKQogICAgICAgICAiICAgIHJldHVybiBmcmFtZS5mdW5j
KCkuc2NyaXB0KCkubmFtZSgpOyIKICAgICAgICAgIiAgfSIKICAgICAgICAgIn0iKSk7Ci0gICAg
djg6OlNjcmlwdDo6Q29tcGlsZSh2ODo6U3RyaW5nOjpOZXcoZnJhbWVTb3VyY2VOYW1lU291cmNl
KSktPlJ1bigpOworICAgIHY4OjpTY3JpcHQ6OkNvbXBpbGUodjg6OlN0cmluZzo6TmV3KGZyYW1l
U291cmNlTmFtZSkpLT5SdW4oKTsKKworICAgIC8vIENvbXBpbGUgSmF2YVNjcmlwdCBmdW5jdGlv
biBmb3IgcmV0cmlldmluZyB0aGUgc3ltYm9sIG5hbWUgZm9yIHRoZQorICAgIC8vIHRvcCBKYXZh
U2NyaXB0IHN0YWNrIGZyYW1lLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhcios
IGZyYW1lRnVuY05hbWUsCisgICAgICAgICgiZnVuY3Rpb24gZnJhbWVGdW5jTmFtZShleGVjX3N0
YXRlKSB7IgorICAgICAgICAiICB2YXIgZnVuYyA9IGV4ZWNfc3RhdGUuZnJhbWUoMCkuZnVuYygp
OyIKKyAgICAgICAgIiAgcmV0dXJuIGZ1bmMubmFtZSgpIHx8IGZ1bmMuaW5mZXJyZWROYW1lKCk7
IgorICAgICAgICAifSIpKTsKKyAgICB2ODo6U2NyaXB0OjpDb21waWxlKHY4OjpTdHJpbmc6Ok5l
dyhmcmFtZUZ1bmNOYW1lKSktPlJ1bigpOwogfQogCiBib29sIFY4UHJveHk6OnNvdXJjZUxpbmVO
dW1iZXIoaW50JiByZXN1bHQpCkBAIC04MDIsNiArODExLDI0IEBAIGJvb2wgVjhQcm94eTo6c291
cmNlTGluZU51bWJlcihpbnQmIHJlc3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWOFBy
b3h5OjpmdW5jTmFtZShTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2Nv
cGU7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhVdGlsaXR5Q29udGV4dCA9IHV0aWxp
dHlDb250ZXh0KCk7CisgICAgaWYgKHY4VXRpbGl0eUNvbnRleHQuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2OFV0
aWxpdHlDb250ZXh0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnJhbWVGdW5jTmFt
ZTsKKyAgICBmcmFtZUZ1bmNOYW1lID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QodjhV
dGlsaXR5Q29udGV4dC0+R2xvYmFsKCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImZyYW1lRnVuY05h
bWUiKSkpOworICAgIGlmIChmcmFtZUZ1bmNOYW1lLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IHY4OjpEZWJ1Zzo6Q2Fs
bChmcmFtZUZ1bmNOYW1lKTsKKyAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmVzdWx0ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogYm9vbCBWOFByb3h5Ojpzb3VyY2VOYW1lKFN0cmluZyYgcmVzdWx0KQog
ewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShy
ZXZpc2lvbiA1NjEyNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDUsNiArMzA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBvZiBzdWNoIGV4Y2VwdGlvbiBpcyB1cCB0byB0aGUgY2FsbGVyLgogICAgICAgICBzdGF0aWMg
Ym9vbCBzb3VyY2VMaW5lTnVtYmVyKGludCYgcmVzdWx0KTsKICAgICAgICAgc3RhdGljIGJvb2wg
c291cmNlTmFtZShTdHJpbmcmIHJlc3VsdCk7CisgICAgICAgIHN0YXRpYyBib29sIGZ1bmNOYW1l
KFN0cmluZyYgcmVzdWx0KTsKIAogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRl
eHQoKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtYWluV29ybGRDb250ZXh0KCk7
CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAJKHJl
dmlzaW9uIDU2MTI0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsMTEgQEAgU2NyaXB0T2JqZWN0IFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYQogCiAgICAgU3RyaW5nIHNvdXJjZU5hbWU7CiAgICAgaW50
IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgaWYgKFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9u
KCZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlcikgJiYgc291cmNlTmFtZSAhPSAidW5kZWZp
bmVkIikgeworICAgIFN0cmluZyBmdW5jTmFtZTsKKyAgICBpZiAoU2NyaXB0Q2FsbFN0YWNrOjpj
YWxsTG9jYXRpb24oJnNvdXJjZU5hbWUsICZzb3VyY2VMaW5lTnVtYmVyLCAmZnVuY05hbWUpICYm
IHNvdXJjZU5hbWUgIT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgcmVjb3JkLnNldCgiY2FsbGVy
U2NyaXB0TmFtZSIsIHNvdXJjZU5hbWUpOwogICAgICAgICByZWNvcmQuc2V0KCJjYWxsZXJTY3Jp
cHRMaW5lIiwgc291cmNlTGluZU51bWJlcik7CisgICAgICAgIHJlY29yZC5zZXQoImNhbGxlckZ1
bmNOYW1lIiwgZnVuY05hbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVjb3JkOwogfQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTY4MDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMy0zMCAgSmFpbWUgWWFwICA8amFpbWV5YXBAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRzIGNhbGxlckZ1bmNOYW1lIHRvIHRoZSBsaXN0IG9mIG5vbmRldGVybWluaXN0aWMgZmll
bGRzIGluIHRoZSB0aW1lbGluZQorICAgICAgICBsYXlvdXQgdGVzdHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjgzOQorCisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLXRlc3QuanM6CisKIDIwMTAtMDMtMzAgIEFkYW0gTGFuZ2xleSAgPGFn
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4
OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcwkocmV2aXNpb24gNTYxMjQpCisr
KyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTAsNiArMTAsNyBAQCB2YXIgdGltZWxpbmVOb25EZXRlcm1pbmlzdGljUHJvcHMgPSB7IAog
ICAgIHdpZHRoIDogMSwKICAgICBjYWxsZXJTY3JpcHROYW1lOiAxLAogICAgIGNhbGxlclNjcmlw
dExpbmU6IDEsCisgICAgY2FsbGVyRnVuY05hbWU6IDEsCiAgICAgdXJsIDogMSwKICAgICBtaW1l
VHlwZSA6IDEKIH07Cg==
</data>
<flag name="review"
          id="35452"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52645</attachid>
            <date>2010-04-06 09:33:04 -0700</date>
            <delta_ts>2010-04-06 23:52:50 -0700</delta_ts>
            <desc>Updated patchset according to Pavel&apos;s suggestions</desc>
            <filename>function_name_v2.patch</filename>
            <type>text/plain</type>
            <size>18996</size>
            <attacher>jaimeyap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzE1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDQtMDYgIEphaW1lIFlhcCAgPGphaW1leWFwQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyB0aGUgYWJpbGl0eSB0byBnZXQgdGhlIGZ1bmN0aW9uIHN5bWJvbCBuYW1lIHdoZW4gbG9va2lu
ZyB1cCB0aGUgY2FsbCBsb2NhdGlvbgorICAgICAgICBmb3IgcmVjb3JkcyBzZW50IGJ5IHRoZSBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LiAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjgzOQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
Y3JlYXRlVXRpbGl0eUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6Omxhc3RDYWxsRnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6dXRpbGl0eUNvbnRl
eHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhQcm94eTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5
Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxs
YmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNv
cmQpOgorCiAyMDEwLTA0LTA2ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDU2MTI0KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAx
LDcgQEAgdm9pZCBTY3JpcHRDYWxsU3RhY2s6OmluaXRpYWxpemUoKQogICAgIG1faW5pdGlhbGl6
ZWQgPSB0cnVlOwogfQogCi1ib29sIFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKFN0cmlu
ZyosIGludCopCitib29sIFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKFN0cmluZyosIGlu
dCosIFN0cmluZyopCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5oCShyZXZpc2lvbiA1NjEyNCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBmcmFtZSByZXRyaWV2YWwgbWV0aG9kcwog
ICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUgJmF0KHVuc2lnbmVkKTsKICAgICAgICAgdW5z
aWduZWQgc2l6ZSgpOwotICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiwg
aW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGNhbGxMb2NhdGlvbihTdHJpbmcqLCBpbnQqLCBT
dHJpbmcqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAkocmV2aXNpb24gNTYxMjQp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDMyICszMiwzMyBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogCiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVy
LmgiCiAKICNpbmNsdWRlIDx2OC5oPgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcmlwdENhbGxTdGFjayog
U2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1
bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkgewogICAgIFN0cmluZyBzb3VyY2VOYW1lOwogICAg
IGludCBzb3VyY2VMaW5lTnVtYmVyOwotICAgIGlmICghY2FsbExvY2F0aW9uKCZzb3VyY2VOYW1l
LCAmc291cmNlTGluZU51bWJlcikpCisgICAgU3RyaW5nIGZ1bmNOYW1lOworICAgIGlmICghY2Fs
bExvY2F0aW9uKCZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1bmNOYW1lKSkKICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKGFyZ3VtZW50cywg
c2tpcEFyZ3VtZW50Q291bnQsIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIpOworICAgIHJl
dHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKGFyZ3VtZW50cywgc2tpcEFyZ3VtZW50Q291bnQsIHNv
dXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIsIGZ1bmNOYW1lKTsKIH0KIAotYm9vbCBTY3JpcHRD
YWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcqIHNvdXJjZU5hbWUsIGludCogc291cmNlTGlu
ZU51bWJlcikKK2Jvb2wgU2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3Vy
Y2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY05hbWUpCiB7Ci0gICAg
aWYgKCFWOFByb3h5Ojpzb3VyY2VOYW1lKCpzb3VyY2VOYW1lKSB8fCAhVjhQcm94eTo6c291cmNl
TGluZU51bWJlcigqc291cmNlTGluZU51bWJlcikpCisgICAgaWYgKCFTY3JpcHREZWJ1Z1NlcnZl
cjo6bGFzdENhbGxGcmFtZSgqc291cmNlTmFtZSwgKnNvdXJjZUxpbmVOdW1iZXIsICpmdW5jTmFt
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqc291cmNlTGluZU51bWJlciArPSAxOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1TY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50
LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIpCi0gICAgOiBtX2xhc3RD
YWxsZXIoU3RyaW5nKCksIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIsIGFyZ3VtZW50cywg
c2tpcEFyZ3VtZW50Q291bnQpCitTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBT
dHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyBmdW5jTmFtZSkK
KyAgICA6IG1fbGFzdENhbGxlcihmdW5jTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJl
ciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCkKICAgICAsIG1fc2NyaXB0U3RhdGUoU2Ny
aXB0U3RhdGU6OmN1cnJlbnQoKSkKIHsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
YWxsU3RhY2suaAkocmV2aXNpb24gNTYxMjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFNjcmlwdENhbGxTdGFjayogY3JlYXRlKGNvbnN0IHY4
OjpBcmd1bWVudHMmLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCA9IDApOwogICAgICAgICB+
U2NyaXB0Q2FsbFN0YWNrKCk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgY2FsbExvY2F0aW9uKFN0
cmluZyogc291cmNlTmFtZSwgaW50KiBzb3VyY2VMaW5lTnVtYmVyKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgY2FsbExvY2F0aW9uKFN0cmluZyogc291cmNlTmFtZSwgaW50KiBzb3VyY2VMaW5lTnVt
YmVyLCBTdHJpbmcqIGZ1bmNOYW1lKTsKIAogICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUm
IGF0KHVuc2lnbmVkKSBjb25zdDsKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCByZXRyaWV2
aW5nIGFuZCBzdG9yaW5nIGNhbGwgc3RhY2sgdHJhY2UKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTY3JpcHRTdGF0ZSogZ2xvYmFsU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTY3JpcHRD
YWxsU3RhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJn
dW1lbnRDb3VudCwgU3RyaW5nIHNvdXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyKTsKKyAg
ICAgICAgU2NyaXB0Q2FsbFN0YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5z
aWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIFN0cmluZyBzb3VyY2VOYW1lLCBpbnQgc291cmNlTGlu
ZU51bWJlciwgU3RyaW5nIGZ1bmNOYW1lKTsKICAgICAKICAgICAgICAgU2NyaXB0Q2FsbEZyYW1l
IG1fbGFzdENhbGxlcjsKICAgICAgICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gNTYx
MjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTYgKzMzLDc2IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKIAorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgPHY4LWRlYnVnLmg+CisK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
djg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IFNjcmlwdERlYnVnU2VydmVyOjptX3V0aWxpdHlD
b250ZXh0OworCiBTY3JpcHREZWJ1Z1NlcnZlciYgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3JpcHREZWJ1Z1NlcnZlciwgc2VydmVyLCAo
KSk7CiAgICAgcmV0dXJuIHNlcnZlcjsKIH0KIAorLy8gQ3JlYXRlIHRoZSB1dGlsaXR5IGNvbnRl
eHQgZm9yIGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5CisvLyB3
aGljaCBhcmUgbm90IHZpc2libGUgdG8gSmF2YVNjcmlwdCBleGVjdXRpbmcgb24gdGhlIHBhZ2Uu
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVVdGlsaXR5Q29udGV4dCgpCit7CisgICAg
QVNTRVJUKG1fdXRpbGl0eUNvbnRleHQuSXNFbXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gZ2xvYmFsVGVtcGxh
dGUgPSB2ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpOworICAgIG1fdXRpbGl0eUNvbnRleHQgPSB2
ODo6Q29udGV4dDo6TmV3KDAsIGdsb2JhbFRlbXBsYXRlKTsKKyAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgY29udGV4dFNjb3BlKG1fdXRpbGl0eUNvbnRleHQpOworCisgICAgLy8gQ29tcGlsZSBKYXZh
U2NyaXB0IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBzb3VyY2UgbGluZSwgdGhlIHNvdXJj
ZQorICAgIC8vIG5hbWUgYW5kIHRoZSBzeW1ib2wgbmFtZSBmb3IgdGhlIHRvcCBKYXZhU2NyaXB0
IHN0YWNrIGZyYW1lLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhciosIGxhc3RD
YWxsRnJhbWUsCisgICAgICAgICgiZnVuY3Rpb24gbGFzdENhbGxGcmFtZShleGVjX3N0YXRlKSB7
IgorICAgICAgICAiICB2YXIgZnJhbWUgPSBleGVjX3N0YXRlLmZyYW1lKDApOyIKKyAgICAgICAg
IiAgdmFyIGZ1bmMgPSBmcmFtZS5mdW5jKCk7IgorICAgICAgICAiICB2YXIgc2NyaXB0TmFtZTsi
CisgICAgICAgICIgIGlmIChmdW5jLnJlc29sdmVkKCkgJiYgIgorICAgICAgICAiICAgICAgZnVu
Yy5zY3JpcHQoKSkgeyIKKyAgICAgICAgIiAgICBzY3JpcHROYW1lID0gZnVuYy5zY3JpcHQoKS5u
YW1lKCk7IgorICAgICAgICAiICB9IgorICAgICAgICAiICByZXR1cm4gW3NjcmlwdE5hbWUsIGZy
YW1lLnNvdXJjZUxpbmUoKSwgKGZ1bmMubmFtZSgpIHx8IGZ1bmMuaW5mZXJyZWROYW1lKCkpXTsi
CisgICAgICAgICJ9IikpOworICAgIHY4OjpTY3JpcHQ6OkNvbXBpbGUodjg6OlN0cmluZzo6TmV3
KGxhc3RDYWxsRnJhbWUpKS0+UnVuKCk7Cit9CisKK2Jvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omxh
c3RDYWxsRnJhbWUoU3RyaW5nJiBzb3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1iZXIsIFN0cmluZyYg
ZnVuY05hbWUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IHY4VXRpbGl0eUNvbnRleHQgPSB1dGlsaXR5Q29udGV4dCgpOworICAgIGlm
ICh2OFV0aWxpdHlDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjhVdGlsaXR5Q29udGV4dCk7CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGxhc3RDYWxsRnJhbWU7CisgICAgbGFzdENhbGxGcmFt
ZSA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KHY4VXRpbGl0eUNvbnRleHQtPkdsb2Jh
bCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJsYXN0Q2FsbEZyYW1lIikpKTsKKyAgICBpZiAobGFz
dENhbGxGcmFtZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSB2ODo6RGVidWc6OkNhbGwobGFzdENhbGxGcmFtZSk7Cisg
ICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAKKyAgICBp
ZiAoIXZhbHVlLT5Jc0FycmF5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4ganNBcnJheSA9IHZhbHVlLT5Ub09iamVjdCgpOworICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHNvdXJjZU5hbWVWYWx1ZSA9IGpzQXJyYXktPkdldCgwKTsKKyAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiBsaW5lTnVtYmVyVmFsdWUgPSBqc0FycmF5LT5HZXQoMSk7CisgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gZnVuY05hbWVWYWx1ZSA9IGpzQXJyYXktPkdldCgyKTsKKyAg
ICBpZiAoc291cmNlTmFtZVZhbHVlLklzRW1wdHkoKSB8fCBsaW5lTnVtYmVyVmFsdWUuSXNFbXB0
eSgpIHx8IGZ1bmNOYW1lVmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7ICAK
KyAgICBzb3VyY2VOYW1lID0gdG9XZWJDb3JlU3RyaW5nKHNvdXJjZU5hbWVWYWx1ZSk7CisgICAg
bGluZU51bWJlciA9IGxpbmVOdW1iZXJWYWx1ZS0+SW50MzJWYWx1ZSgpOworICAgIGZ1bmNOYW1l
ID0gdG9XZWJDb3JlU3RyaW5nKGZ1bmNOYW1lVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgJKHJl
dmlzaW9uIDU2MTI0KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxNSBAQCBjbGFzcyBTY3JpcHREZWJ1Z0xpc3Rl
bmVyOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVi
bGljOgogICAgIHN0YXRpYyBTY3JpcHREZWJ1Z1NlcnZlciYgc2hhcmVkKCk7CisgICAgCisgICAg
Ly8gRnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHNvdXJjZSBuYW1lLCBsaW5lIG51bWJlciBh
bmQgZnVuY3Rpb24gbmFtZSBmb3IgdGhlIHRvcAorICAgIC8vIEphdmFTY3JpcHQgc3RhY2sgZnJh
bWUuCisgICAgLy8KKyAgICAvLyBJdCB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBjYWxsZXIgaW5m
b3JtYXRpb24gd2FzIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgYW5kIHdyaXR0ZW4KKyAgICAvLyBp
bnRvIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXJzLCBvdGhlcndpc2UgdGhlIGZ1bmN0aW9uIHdpbGwg
cmV0dXJuIGZhbHNlLiBJdCBtYXkKKyAgICAvLyBmYWlsIGR1ZSB0byBhIHN0Y2sgb3ZlcmZsb3cg
aW4gdGhlIHVuZGVybHlpbmcgSmF2YVNjcmlwdCBpbXBsZW50YXRpb24sIGhhbmRsaW5nCisgICAg
Ly8gb2Ygc3VjaCBleGNlcHRpb24gaXMgdXAgdG8gdGhlIGNhbGxlci4KKyAgICBzdGF0aWMgYm9v
bCBsYXN0Q2FsbEZyYW1lKFN0cmluZyYgc291cmNlTmFtZSwgaW50JiBsaW5lTnVtYmVyLCBTdHJp
bmcmIGZ1bmNOYW1lKTsKIAogICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5l
ciosIFBhZ2UqKSB7IH0KICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVu
ZXIqLCBQYWdlKikgeyB9CkBAIC04MCw2ICs4OSwyMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFNjcmlwdERlYnVnU2VydmVyKCkgeyB9CiAgICAgflNjcmlwdERlYnVnU2VydmVyKCkgeyB9CisK
KyAgICBzdGF0aWMgdm9pZCBjcmVhdGVVdGlsaXR5Q29udGV4dCgpOworCisgICAgLy8gUmV0dXJu
cyBhIGxvY2FsIGhhbmRsZSBvZiB0aGUgdXRpbGl0eSBjb250ZXh0LgorICAgIHN0YXRpYyB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IHV0aWxpdHlDb250ZXh0KCkgeworICAgICAgaWYgKG1fdXRpbGl0
eUNvbnRleHQuSXNFbXB0eSgpKSB7CisgICAgICAgIGNyZWF0ZVV0aWxpdHlDb250ZXh0KCk7Cisg
ICAgICB9CisgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fdXRpbGl0
eUNvbnRleHQpOworICAgIH0KKworICAgICAgICAgICAgCisgICAgLy8gVXRpbGl0eSBjb250ZXh0
IGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5LgorICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV91dGlsaXR5Q29udGV4dDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkocmV2aXNp
b24gNTYxMjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSw2IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1dGls
aXR5PgogI2luY2x1ZGUgPHY4Lmg+Ci0jaW5jbHVkZSA8djgtZGVidWcuaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTc4LDggKzc3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gVjhQcm94eTo6bV91dGlsaXR5Q29u
dGV4dDsKLQogLy8gU3RhdGljIGxpc3Qgb2YgcmVnaXN0ZXJlZCBleHRlbnNpb25zCiBWOEV4dGVu
c2lvbnMgVjhQcm94eTo6bV9leHRlbnNpb25zOwogCkBAIC00ODMsNyArNDgwLDcgQEAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2FsbEZ1bmN0aQogICAgICAgICAgICAgaWYgKHRpbWVs
aW5lQWdlbnQpIHsKICAgICAgICAgICAgICAgICB2ODo6U2NyaXB0T3JpZ2luIG9yaWdpbiA9IGZ1
bmN0aW9uLT5HZXRTY3JpcHRPcmlnaW4oKTsKICAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbi5S
ZXNvdXJjZU5hbWUoKS5Jc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPndpbGxDYWxsRnVuY3Rpb24odjhWYWx1ZVRvV2ViQ29yZVN0cmluZyhvcmlnaW4uUmVzb3Vy
Y2VOYW1lKCkpLCBmdW5jdGlvbi0+R2V0U2NyaXB0TGluZU51bWJlcigpICsgMSk7CisgICAgICAg
ICAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxDYWxsRnVuY3Rpb24odjhWYWx1ZVRvV2Vi
Q29yZVN0cmluZyhvcmlnaW4uUmVzb3VyY2VOYW1lKCkpLCBmdW5jdGlvbi0+R2V0U2NyaXB0TGlu
ZU51bWJlcigpICsgMS8qIFRPRE8oamFpbWV5YXApOiBncmFiIGNvbHVtbiBvZmZzZXQsIG9yaWdp
bi5SZXNvdXJjZUNvbHVtbk9mZnNldC0+VG9JbnRlZ2VyKCkqLyk7CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICB0aW1lbGluZUFnZW50ID0gMDsKICAgICAgICAgICAg
IH0KQEAgLTc1MSw3NSArNzQ4LDYgQEAgdm9pZCBWOFByb3h5Ojpwcm9jZXNzQ29uc29sZU1lc3Nh
Z2VzKCkKICAgICBWOENvbnNvbGVNZXNzYWdlOjpwcm9jZXNzRGVsYXllZCgpOwogfQogCi0vLyBD
cmVhdGUgdGhlIHV0aWxpdHkgY29udGV4dCBmb3IgaG9sZGluZyBKYXZhU2NyaXB0IGZ1bmN0aW9u
cyB1c2VkIGludGVybmFsbHkKLS8vIHdoaWNoIGFyZSBub3QgdmlzaWJsZSB0byBKYXZhU2NyaXB0
IGV4ZWN1dGluZyBvbiB0aGUgcGFnZS4KLXZvaWQgVjhQcm94eTo6Y3JlYXRlVXRpbGl0eUNvbnRl
eHQoKQotewotICAgIEFTU0VSVChtX3V0aWxpdHlDb250ZXh0LklzRW1wdHkoKSk7Ci0KLSAgICB2
ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+
IGdsb2JhbFRlbXBsYXRlID0gdjg6Ok9iamVjdFRlbXBsYXRlOjpOZXcoKTsKLSAgICBtX3V0aWxp
dHlDb250ZXh0ID0gdjg6OkNvbnRleHQ6Ok5ldygwLCBnbG9iYWxUZW1wbGF0ZSk7Ci0gICAgdjg6
OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX3V0aWxpdHlDb250ZXh0KTsKLQotICAgIC8v
IENvbXBpbGUgSmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgc291cmNlIGxp
bmUgb2YgdGhlIHRvcAotICAgIC8vIEphdmFTY3JpcHQgc3RhY2sgZnJhbWUuCi0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBjaGFyKiwgZnJhbWVTb3VyY2VMaW5lU291cmNlLAotICAgICAg
ICAoImZ1bmN0aW9uIGZyYW1lU291cmNlTGluZShleGVjX3N0YXRlKSB7IgotICAgICAgICAiICBy
ZXR1cm4gZXhlY19zdGF0ZS5mcmFtZSgwKS5zb3VyY2VMaW5lKCk7IgotICAgICAgICAifSIpKTsK
LSAgICB2ODo6U2NyaXB0OjpDb21waWxlKHY4OjpTdHJpbmc6Ok5ldyhmcmFtZVNvdXJjZUxpbmVT
b3VyY2UpKS0+UnVuKCk7Ci0KLSAgICAvLyBDb21waWxlIEphdmFTY3JpcHQgZnVuY3Rpb24gZm9y
IHJldHJpZXZpbmcgdGhlIHNvdXJjZSBuYW1lIG9mIHRoZSB0b3AKLSAgICAvLyBKYXZhU2NyaXB0
IHN0YWNrIGZyYW1lLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhciosIGZyYW1l
U291cmNlTmFtZVNvdXJjZSwKLSAgICAgICAgKCJmdW5jdGlvbiBmcmFtZVNvdXJjZU5hbWUoZXhl
Y19zdGF0ZSkgeyIKLSAgICAgICAgIiAgdmFyIGZyYW1lID0gZXhlY19zdGF0ZS5mcmFtZSgwKTsi
Ci0gICAgICAgICIgIGlmIChmcmFtZS5mdW5jKCkucmVzb2x2ZWQoKSAmJiAiCi0gICAgICAgICIg
ICAgICBmcmFtZS5mdW5jKCkuc2NyaXB0KCkgJiYgIgotICAgICAgICAiICAgICAgZnJhbWUuZnVu
YygpLnNjcmlwdCgpLm5hbWUoKSkgeyIKLSAgICAgICAgIiAgICByZXR1cm4gZnJhbWUuZnVuYygp
LnNjcmlwdCgpLm5hbWUoKTsiCi0gICAgICAgICIgIH0iCi0gICAgICAgICJ9IikpOwotICAgIHY4
OjpTY3JpcHQ6OkNvbXBpbGUodjg6OlN0cmluZzo6TmV3KGZyYW1lU291cmNlTmFtZVNvdXJjZSkp
LT5SdW4oKTsKLX0KLQotYm9vbCBWOFByb3h5Ojpzb3VyY2VMaW5lTnVtYmVyKGludCYgcmVzdWx0
KQotewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiB2OFV0aWxpdHlDb250ZXh0ID0gVjhQcm94eTo6dXRpbGl0eUNvbnRleHQoKTsKLSAgICBp
ZiAodjhVdGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4VXRpbGl0eUNvbnRleHQpOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmcmFtZVNvdXJjZUxpbmU7Ci0gICAgZnJhbWVTb3Vy
Y2VMaW5lID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QodjhVdGlsaXR5Q29udGV4dC0+
R2xvYmFsKCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImZyYW1lU291cmNlTGluZSIpKSk7Ci0gICAg
aWYgKGZyYW1lU291cmNlTGluZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSB2ODo6RGVidWc6OkNhbGwoZnJhbWVTb3Vy
Y2VMaW5lKTsKLSAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmVzdWx0ID0gdmFsdWUtPkludDMyVmFsdWUoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBWOFByb3h5Ojpzb3VyY2VOYW1lKFN0cmluZyYgcmVzdWx0KQotewotICAgIHY4OjpI
YW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OFV0aWxpdHlD
b250ZXh0ID0gdXRpbGl0eUNvbnRleHQoKTsKLSAgICBpZiAodjhVdGlsaXR5Q29udGV4dC5Jc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29u
dGV4dFNjb3BlKHY4VXRpbGl0eUNvbnRleHQpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiBmcmFtZVNvdXJjZU5hbWU7Ci0gICAgZnJhbWVTb3VyY2VOYW1lID0gdjg6OkxvY2FsPHY4OjpG
dW5jdGlvbj46OkNhc3QodjhVdGlsaXR5Q29udGV4dC0+R2xvYmFsKCktPkdldCh2ODo6U3RyaW5n
OjpOZXcoImZyYW1lU291cmNlTmFtZSIpKSk7Ci0gICAgaWYgKGZyYW1lU291cmNlTmFtZS5Jc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUgPSB2ODo6RGVidWc6OkNhbGwoZnJhbWVTb3VyY2VOYW1lKTsKLSAgICBpZiAodmFsdWUu
SXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gdG9XZWJDb3Jl
U3RyaW5nKHZhbHVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBWOFByb3h5OjpyZWdp
c3RlckV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKiBleHRlbnNpb24pCiB7CiAgICAgLy8g
SWYgdGhlIGV4dGVuc2lvbiBleGlzdHMgaW4gb3VyIGxpc3QsIGl0IHdhcyBhbHJlYWR5IHJlZ2lz
dGVyZWQgd2l0aCBWOC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA1NjEyNCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYs
MTYgKzI5Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUHJvY2VzcyBhbnkg
cGVuZGluZyBKYXZhU2NyaXB0IGNvbnNvbGUgbWVzc2FnZXMuCiAgICAgICAgIHN0YXRpYyB2b2lk
IHByb2Nlc3NDb25zb2xlTWVzc2FnZXMoKTsKIAotICAgICAgICAvLyBGdW5jdGlvbiBmb3IgcmV0
cmlldmluZyB0aGUgbGluZSBudW1iZXIgYW5kIHNvdXJjZSBuYW1lIGZvciB0aGUgdG9wCi0gICAg
ICAgIC8vIEphdmFTY3JpcHQgc3RhY2sgZnJhbWUuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIEl0
IHdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIGxpbmUgbnVtYmVyIHdhcyBzdWNjZXNzZnVsbHkgcmV0
cmlldmVkIGFuZCB3cml0dGVuCi0gICAgICAgIC8vIGludG8gdGhlIHxyZXN1bHR8IHBhcmFtZXRl
ciwgb3RoZXJ3aXNlIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBmYWxzZS4gSXQgbWF5Ci0gICAg
ICAgIC8vIGZhaWwgZHVlIHRvIGEgc3RjayBvdmVyZmxvdyBpbiB0aGUgdW5kZXJseWluZyBKYXZh
U2NyaXB0IGltcGxlbnRhdGlvbiwgaGFuZGxpbmcKLSAgICAgICAgLy8gb2Ygc3VjaCBleGNlcHRp
b24gaXMgdXAgdG8gdGhlIGNhbGxlci4KLSAgICAgICAgc3RhdGljIGJvb2wgc291cmNlTGluZU51
bWJlcihpbnQmIHJlc3VsdCk7Ci0gICAgICAgIHN0YXRpYyBib29sIHNvdXJjZU5hbWUoU3RyaW5n
JiByZXN1bHQpOwotCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCgpOwog
ICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1haW5Xb3JsZENvbnRleHQoKTsKIApAQCAt
MzU2LDIzICszNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciogc3ZnRXhjZXB0aW9uTmFtZShpbnQgZXhjZXB0aW9uQ29kZSk7CiAjZW5kaWYKIAot
ICAgICAgICBzdGF0aWMgdm9pZCBjcmVhdGVVdGlsaXR5Q29udGV4dCgpOwotCi0gICAgICAgIC8v
IFJldHVybnMgYSBsb2NhbCBoYW5kbGUgb2YgdGhlIHV0aWxpdHkgY29udGV4dC4KLSAgICAgICAg
c3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdXRpbGl0eUNvbnRleHQoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAobV91dGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgY3JlYXRlVXRpbGl0eUNvbnRleHQoKTsKLSAgICAgICAgICAgIHJldHVybiB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGlsaXR5Q29udGV4dCk7Ci0gICAgICAgIH0KLQogICAg
ICAgICBGcmFtZSogbV9mcmFtZTsKIAogICAgICAgICAvLyBGb3IgdGhlIG1vbWVudCwgd2UgaGF2
ZSBvbmUgb2YgdGhlc2UuICBTb29uIHdlIHdpbGwgaGF2ZSBvbmUgcGVyIERPTVdyYXBwZXJXb3Js
ZC4KICAgICAgICAgUmVmUHRyPFY4RE9NV2luZG93U2hlbGw+IG1fd2luZG93U2hlbGw7Ci0gICAg
ICAgIAotICAgICAgICAvLyBVdGlsaXR5IGNvbnRleHQgaG9sZGluZyBKYXZhU2NyaXB0IGZ1bmN0
aW9ucyB1c2VkIGludGVybmFsbHkuCi0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
Q29udGV4dD4gbV91dGlsaXR5Q29udGV4dDsKIAogICAgICAgICBpbnQgbV9oYW5kbGVyTGluZU51
bWJlcjsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1NjEyNCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKKyNpbmNsdWRlICJTY3JpcHRE
ZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgpAQCAtODcsMTAgKzg4LDkgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6aQogICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogCiAgICAgU3RyaW5nIGNhbGxlclVSTDsKLSAgICBpZiAoIVY4UHJveHk6OnNvdXJj
ZU5hbWUoY2FsbGVyVVJMKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBp
bnQgY2FsbGVyTGluZTsKLSAgICBpZiAoIVY4UHJveHk6OnNvdXJjZUxpbmVOdW1iZXIoY2FsbGVy
TGluZSkpCisgICAgU3RyaW5nIGZ1bmNOYW1lOworICAgIGlmICghU2NyaXB0RGVidWdTZXJ2ZXI6
Omxhc3RDYWxsRnJhbWUoY2FsbGVyVVJMLCBjYWxsZXJMaW5lLCBmdW5jTmFtZSkpCiAgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgY2FsbGVyTGluZSArPSAxOwogCkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAJKHJldmlzaW9uIDU2
MTI0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsOSArNTEsMTEgQEAgU2NyaXB0T2JqZWN0IFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYQogCiAgICAgU3RyaW5nIHNvdXJjZU5hbWU7CiAgICAgaW50IHNvdXJjZUxp
bmVOdW1iZXI7Ci0gICAgaWYgKFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKCZzb3VyY2VO
YW1lLCAmc291cmNlTGluZU51bWJlcikgJiYgc291cmNlTmFtZSAhPSAidW5kZWZpbmVkIikgewor
ICAgIFN0cmluZyBmdW5jTmFtZTsKKyAgICBpZiAoU2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRp
b24oJnNvdXJjZU5hbWUsICZzb3VyY2VMaW5lTnVtYmVyLCAmZnVuY05hbWUpICYmIHNvdXJjZU5h
bWUgIT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgcmVjb3JkLnNldCgiY2FsbGVyU2NyaXB0TmFt
ZSIsIHNvdXJjZU5hbWUpOwogICAgICAgICByZWNvcmQuc2V0KCJjYWxsZXJTY3JpcHRMaW5lIiwg
c291cmNlTGluZU51bWJlcik7CisgICAgICAgIHJlY29yZC5zZXQoImNhbGxlckZ1bmNOYW1lIiwg
ZnVuY05hbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVjb3JkOwogfQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNTcxNTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0wNC0wNiAgSmFpbWUgWWFwICA8amFpbWV5YXBAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgCisgICAgICAgIEFkZHMg
Y2FsbGVyRnVuY05hbWUgdG8gdGhlIGxpc3Qgb2Ygbm9uZGV0ZXJtaW5pc3RpYyBmaWVsZHMgaW4g
dGhlIHRpbWVsaW5lCisgICAgICAgIGxheW91dCB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2ODM5CisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
dGltZWxpbmUtdGVzdC5qczoKKwogMjAxMC0wNC0wNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNs
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5k
ZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCShyZXZpc2lvbiA1NjEyNCkK
KysrIExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw2ICsxMCw3IEBAIHZhciB0aW1lbGluZU5vbkRldGVybWluaXN0aWNQcm9wcyA9IHsg
CiAgICAgd2lkdGggOiAxLAogICAgIGNhbGxlclNjcmlwdE5hbWU6IDEsCiAgICAgY2FsbGVyU2Ny
aXB0TGluZTogMSwKKyAgICBjYWxsZXJGdW5jTmFtZTogMSwKICAgICB1cmwgOiAxLAogICAgIG1p
bWVUeXBlIDogMQogfTsK
</data>
<flag name="review"
          id="36171"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52655</attachid>
            <date>2010-04-06 11:59:48 -0700</date>
            <delta_ts>2010-04-06 23:53:01 -0700</delta_ts>
            <desc>Merging up to r. 57156 and adding guard for frameCount.</desc>
            <filename>function_name_v4.patch</filename>
            <type>text/plain</type>
            <size>17045</size>
            <attacher>jaimeyap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDQtMDYgIEphaW1lIFlhcCAgPGphaW1leWFwQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyB0aGUgYWJpbGl0eSB0byBnZXQgdGhlIGZ1bmN0aW9uIHN5bWJvbCBuYW1lIHdoZW4gbG9va2lu
ZyB1cCB0aGUgY2FsbCBsb2NhdGlvbgorICAgICAgICBmb3IgcmVjb3JkcyBzZW50IGJ5IHRoZSBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LiAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjgzOQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
Y3JlYXRlVXRpbGl0eUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6Omxhc3RDYWxsRnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6dXRpbGl0eUNvbnRl
eHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhQcm94eTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxs
YmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNv
cmQpOgorCiAyMDEwLTA0LTA2ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDU3MTU2KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAx
LDcgQEAgdm9pZCBTY3JpcHRDYWxsU3RhY2s6OmluaXRpYWxpemUoKQogICAgIG1faW5pdGlhbGl6
ZWQgPSB0cnVlOwogfQogCi1ib29sIFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKFN0cmlu
ZyosIGludCopCitib29sIFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKFN0cmluZyosIGlu
dCosIFN0cmluZyopCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5oCShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBmcmFtZSByZXRyaWV2YWwgbWV0aG9kcwog
ICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUgJmF0KHVuc2lnbmVkKTsKICAgICAgICAgdW5z
aWduZWQgc2l6ZSgpOwotICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiwg
aW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGNhbGxMb2NhdGlvbihTdHJpbmcqLCBpbnQqLCBT
dHJpbmcqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAkocmV2aXNpb24gNTcxNTYp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDMyICszMiwzMyBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogCiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVy
LmgiCiAKICNpbmNsdWRlIDx2OC5oPgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcmlwdENhbGxTdGFjayog
U2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1
bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkgewogICAgIFN0cmluZyBzb3VyY2VOYW1lOwogICAg
IGludCBzb3VyY2VMaW5lTnVtYmVyOwotICAgIGlmICghY2FsbExvY2F0aW9uKCZzb3VyY2VOYW1l
LCAmc291cmNlTGluZU51bWJlcikpCisgICAgU3RyaW5nIGZ1bmNOYW1lOworICAgIGlmICghY2Fs
bExvY2F0aW9uKCZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1bmNOYW1lKSkKICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKGFyZ3VtZW50cywg
c2tpcEFyZ3VtZW50Q291bnQsIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIpOworICAgIHJl
dHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKGFyZ3VtZW50cywgc2tpcEFyZ3VtZW50Q291bnQsIHNv
dXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIsIGZ1bmNOYW1lKTsKIH0KIAotYm9vbCBTY3JpcHRD
YWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcqIHNvdXJjZU5hbWUsIGludCogc291cmNlTGlu
ZU51bWJlcikKK2Jvb2wgU2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3Vy
Y2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY05hbWUpCiB7Ci0gICAg
aWYgKCFWOFByb3h5Ojpzb3VyY2VOYW1lKCpzb3VyY2VOYW1lKSB8fCAhVjhQcm94eTo6c291cmNl
TGluZU51bWJlcigqc291cmNlTGluZU51bWJlcikpCisgICAgaWYgKCFTY3JpcHREZWJ1Z1NlcnZl
cjo6bGFzdENhbGxGcmFtZSgqc291cmNlTmFtZSwgKnNvdXJjZUxpbmVOdW1iZXIsICpmdW5jTmFt
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqc291cmNlTGluZU51bWJlciArPSAxOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1TY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50
LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIpCi0gICAgOiBtX2xhc3RD
YWxsZXIoU3RyaW5nKCksIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIsIGFyZ3VtZW50cywg
c2tpcEFyZ3VtZW50Q291bnQpCitTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBT
dHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyBmdW5jTmFtZSkK
KyAgICA6IG1fbGFzdENhbGxlcihmdW5jTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJl
ciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCkKICAgICAsIG1fc2NyaXB0U3RhdGUoU2Ny
aXB0U3RhdGU6OmN1cnJlbnQoKSkKIHsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
YWxsU3RhY2suaAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFNjcmlwdENhbGxTdGFjayogY3JlYXRlKGNvbnN0IHY4
OjpBcmd1bWVudHMmLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCA9IDApOwogICAgICAgICB+
U2NyaXB0Q2FsbFN0YWNrKCk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgY2FsbExvY2F0aW9uKFN0
cmluZyogc291cmNlTmFtZSwgaW50KiBzb3VyY2VMaW5lTnVtYmVyKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgY2FsbExvY2F0aW9uKFN0cmluZyogc291cmNlTmFtZSwgaW50KiBzb3VyY2VMaW5lTnVt
YmVyLCBTdHJpbmcqIGZ1bmNOYW1lKTsKIAogICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUm
IGF0KHVuc2lnbmVkKSBjb25zdDsKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCByZXRyaWV2
aW5nIGFuZCBzdG9yaW5nIGNhbGwgc3RhY2sgdHJhY2UKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTY3JpcHRTdGF0ZSogZ2xvYmFsU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTY3JpcHRD
YWxsU3RhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJn
dW1lbnRDb3VudCwgU3RyaW5nIHNvdXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyKTsKKyAg
ICAgICAgU2NyaXB0Q2FsbFN0YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5z
aWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIFN0cmluZyBzb3VyY2VOYW1lLCBpbnQgc291cmNlTGlu
ZU51bWJlciwgU3RyaW5nIGZ1bmNOYW1lKTsKICAgICAKICAgICAgICAgU2NyaXB0Q2FsbEZyYW1l
IG1fbGFzdENhbGxlcjsKICAgICAgICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gNTcx
NTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTYgKzMzLDc4IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKIAorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgPHY4LWRlYnVnLmg+CisK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
djg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IFNjcmlwdERlYnVnU2VydmVyOjptX3V0aWxpdHlD
b250ZXh0OworCiBTY3JpcHREZWJ1Z1NlcnZlciYgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3JpcHREZWJ1Z1NlcnZlciwgc2VydmVyLCAo
KSk7CiAgICAgcmV0dXJuIHNlcnZlcjsKIH0KIAorLy8gQ3JlYXRlIHRoZSB1dGlsaXR5IGNvbnRl
eHQgZm9yIGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5CisvLyB3
aGljaCBhcmUgbm90IHZpc2libGUgdG8gSmF2YVNjcmlwdCBleGVjdXRpbmcgb24gdGhlIHBhZ2Uu
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVVdGlsaXR5Q29udGV4dCgpCit7CisgICAg
QVNTRVJUKG1fdXRpbGl0eUNvbnRleHQuSXNFbXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gZ2xvYmFsVGVtcGxh
dGUgPSB2ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpOworICAgIG1fdXRpbGl0eUNvbnRleHQgPSB2
ODo6Q29udGV4dDo6TmV3KDAsIGdsb2JhbFRlbXBsYXRlKTsKKyAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgY29udGV4dFNjb3BlKG1fdXRpbGl0eUNvbnRleHQpOworCisgICAgLy8gQ29tcGlsZSBKYXZh
U2NyaXB0IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBzb3VyY2UgbGluZSwgdGhlIHNvdXJj
ZQorICAgIC8vIG5hbWUgYW5kIHRoZSBzeW1ib2wgbmFtZSBmb3IgdGhlIHRvcCBKYXZhU2NyaXB0
IHN0YWNrIGZyYW1lLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhciosIGxhc3RD
YWxsRnJhbWUsCisgICAgICAgICgiZnVuY3Rpb24gbGFzdENhbGxGcmFtZShleGVjX3N0YXRlKSB7
IgorICAgICAgICAiICBpZiAoIWV4ZWNfc3RhdGUuZnJhbWVDb3VudCgpKSIKKyAgICAgICAgIiAg
ICByZXR1cm4gdW5kZWZpbmVkOyIKKyAgICAgICAgIiAgdmFyIGZyYW1lID0gZXhlY19zdGF0ZS5m
cmFtZSgwKTsiCisgICAgICAgICIgIHZhciBmdW5jID0gZnJhbWUuZnVuYygpOyIKKyAgICAgICAg
IiAgdmFyIHNjcmlwdE5hbWU7IgorICAgICAgICAiICBpZiAoZnVuYy5yZXNvbHZlZCgpICYmICIK
KyAgICAgICAgIiAgICAgIGZ1bmMuc2NyaXB0KCkpIHsiCisgICAgICAgICIgICAgc2NyaXB0TmFt
ZSA9IGZ1bmMuc2NyaXB0KCkubmFtZSgpOyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAgIiAgcmV0
dXJuIFtzY3JpcHROYW1lLCBmcmFtZS5zb3VyY2VMaW5lKCksIChmdW5jLm5hbWUoKSB8fCBmdW5j
LmluZmVycmVkTmFtZSgpKV07IgorICAgICAgICAifSIpKTsKKyAgICB2ODo6U2NyaXB0OjpDb21w
aWxlKHY4OjpTdHJpbmc6Ok5ldyhsYXN0Q2FsbEZyYW1lKSktPlJ1bigpOworfQorCitib29sIFNj
cmlwdERlYnVnU2VydmVyOjpsYXN0Q2FsbEZyYW1lKFN0cmluZyYgc291cmNlTmFtZSwgaW50JiBs
aW5lTnVtYmVyLCBTdHJpbmcmIGZ1bmNOYW1lKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBzY29w
ZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OFV0aWxpdHlDb250ZXh0ID0gdXRpbGl0
eUNvbnRleHQoKTsKKyAgICBpZiAodjhVdGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4VXRp
bGl0eUNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBsYXN0Q2FsbEZyYW1l
OworICAgIGxhc3RDYWxsRnJhbWUgPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdCh2OFV0
aWxpdHlDb250ZXh0LT5HbG9iYWwoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGFzdENhbGxGcmFt
ZSIpKSk7CisgICAgaWYgKGxhc3RDYWxsRnJhbWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gdjg6OkRlYnVnOjpDYWxs
KGxhc3RDYWxsRnJhbWUpOworICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsgICAgCisgICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGpzQXJyYXkgPSB2YWx1ZS0+VG9PYmpl
Y3QoKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzb3VyY2VOYW1lVmFsdWUgPSBqc0FycmF5
LT5HZXQoMCk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGluZU51bWJlclZhbHVlID0ganNB
cnJheS0+R2V0KDEpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGZ1bmNOYW1lVmFsdWUgPSBq
c0FycmF5LT5HZXQoMik7CisgICAgaWYgKHNvdXJjZU5hbWVWYWx1ZS5Jc0VtcHR5KCkgfHwgbGlu
ZU51bWJlclZhbHVlLklzRW1wdHkoKSB8fCBmdW5jTmFtZVZhbHVlLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOyAgCisgICAgc291cmNlTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhzb3Vy
Y2VOYW1lVmFsdWUpOworICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyVmFsdWUtPkludDMyVmFs
dWUoKTsKKyAgICBmdW5jTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhmdW5jTmFtZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdERlYnVnU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5oCShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTUgQEAgY2xh
c3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyIDogcHVibGlj
IE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXImIHNo
YXJlZCgpOworICAgIAorICAgIC8vIEZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBzb3VyY2Ug
bmFtZSwgbGluZSBudW1iZXIgYW5kIGZ1bmN0aW9uIG5hbWUgZm9yIHRoZSB0b3AKKyAgICAvLyBK
YXZhU2NyaXB0IHN0YWNrIGZyYW1lLgorICAgIC8vCisgICAgLy8gSXQgd2lsbCByZXR1cm4gdHJ1
ZSBpZiB0aGUgY2FsbGVyIGluZm9ybWF0aW9uIHdhcyBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGFu
ZCB3cml0dGVuCisgICAgLy8gaW50byB0aGUgZnVuY3Rpb24gcGFyYW1ldGVycywgb3RoZXJ3aXNl
IHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBmYWxzZS4gSXQgbWF5CisgICAgLy8gZmFpbCBkdWUg
dG8gYSBzdGNrIG92ZXJmbG93IGluIHRoZSB1bmRlcmx5aW5nIEphdmFTY3JpcHQgaW1wbGVudGF0
aW9uLCBoYW5kbGluZworICAgIC8vIG9mIHN1Y2ggZXhjZXB0aW9uIGlzIHVwIHRvIHRoZSBjYWxs
ZXIuCisgICAgc3RhdGljIGJvb2wgbGFzdENhbGxGcmFtZShTdHJpbmcmIHNvdXJjZU5hbWUsIGlu
dCYgbGluZU51bWJlciwgU3RyaW5nJiBmdW5jTmFtZSk7CiAKICAgICB2b2lkIGFkZExpc3RlbmVy
KFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKikgeyB9CiAgICAgdm9pZCByZW1vdmVMaXN0ZW5l
cihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopIHsgfQpAQCAtODAsNiArODksMTkgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBTY3JpcHREZWJ1Z1NlcnZlcigpIHsgfQogICAgIH5TY3JpcHRE
ZWJ1Z1NlcnZlcigpIHsgfQorCisgICAgc3RhdGljIHZvaWQgY3JlYXRlVXRpbGl0eUNvbnRleHQo
KTsKKworICAgIC8vIFJldHVybnMgYSBsb2NhbCBoYW5kbGUgb2YgdGhlIHV0aWxpdHkgY29udGV4
dC4KKyAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB1dGlsaXR5Q29udGV4dCgpIHsK
KyAgICAgIGlmIChtX3V0aWxpdHlDb250ZXh0LklzRW1wdHkoKSkgeworICAgICAgICBjcmVhdGVV
dGlsaXR5Q29udGV4dCgpOworICAgICAgfQorICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD46Ok5ldyhtX3V0aWxpdHlDb250ZXh0KTsKKyAgICB9CisKKyAgICAvLyBVdGlsaXR5IGNv
bnRleHQgaG9sZGluZyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkuCisgICAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX3V0aWxpdHlDb250ZXh0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCShy
ZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAjaW5jbHVkZSA8djguaD4KLSNpbmNsdWRlIDx2OC1kZWJ1Zy5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtNzcsOCArNzYsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBWOFByb3h5OjptX3V0aWxp
dHlDb250ZXh0OwotCiAvLyBTdGF0aWMgbGlzdCBvZiByZWdpc3RlcmVkIGV4dGVuc2lvbnMKIFY4
RXh0ZW5zaW9ucyBWOFByb3h5OjptX2V4dGVuc2lvbnM7CiAKQEAgLTc1NSw3OSArNzUyLDYgQEAg
dm9pZCBWOFByb3h5Ojpwcm9jZXNzQ29uc29sZU1lc3NhZ2VzKCkKICAgICBWOENvbnNvbGVNZXNz
YWdlOjpwcm9jZXNzRGVsYXllZCgpOwogfQogCi0vLyBDcmVhdGUgdGhlIHV0aWxpdHkgY29udGV4
dCBmb3IgaG9sZGluZyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkKLS8vIHdo
aWNoIGFyZSBub3QgdmlzaWJsZSB0byBKYXZhU2NyaXB0IGV4ZWN1dGluZyBvbiB0aGUgcGFnZS4K
LXZvaWQgVjhQcm94eTo6Y3JlYXRlVXRpbGl0eUNvbnRleHQoKQotewotICAgIEFTU0VSVChtX3V0
aWxpdHlDb250ZXh0LklzRW1wdHkoKSk7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGdsb2JhbFRlbXBsYXRlID0gdjg6Ok9i
amVjdFRlbXBsYXRlOjpOZXcoKTsKLSAgICBtX3V0aWxpdHlDb250ZXh0ID0gdjg6OkNvbnRleHQ6
Ok5ldygwLCBnbG9iYWxUZW1wbGF0ZSk7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRT
Y29wZShtX3V0aWxpdHlDb250ZXh0KTsKLQotICAgIC8vIENvbXBpbGUgSmF2YVNjcmlwdCBmdW5j
dGlvbiBmb3IgcmV0cmlldmluZyB0aGUgc291cmNlIGxpbmUgb2YgdGhlIHRvcAotICAgIC8vIEph
dmFTY3JpcHQgc3RhY2sgZnJhbWUuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBjaGFy
KiwgZnJhbWVTb3VyY2VMaW5lU291cmNlLAotICAgICAgICAoImZ1bmN0aW9uIGZyYW1lU291cmNl
TGluZShleGVjX3N0YXRlKSB7IgotICAgICAgICAiICBpZiAoIWV4ZWNfc3RhdGUuZnJhbWVDb3Vu
dCgpKSIKLSAgICAgICAgIiAgICAgIHJldHVybiB1bmRlZmluZWQ7IgotICAgICAgICAiICByZXR1
cm4gZXhlY19zdGF0ZS5mcmFtZSgwKS5zb3VyY2VMaW5lKCk7IgotICAgICAgICAifSIpKTsKLSAg
ICB2ODo6U2NyaXB0OjpDb21waWxlKHY4OjpTdHJpbmc6Ok5ldyhmcmFtZVNvdXJjZUxpbmVTb3Vy
Y2UpKS0+UnVuKCk7Ci0KLSAgICAvLyBDb21waWxlIEphdmFTY3JpcHQgZnVuY3Rpb24gZm9yIHJl
dHJpZXZpbmcgdGhlIHNvdXJjZSBuYW1lIG9mIHRoZSB0b3AKLSAgICAvLyBKYXZhU2NyaXB0IHN0
YWNrIGZyYW1lLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhciosIGZyYW1lU291
cmNlTmFtZVNvdXJjZSwKLSAgICAgICAgKCJmdW5jdGlvbiBmcmFtZVNvdXJjZU5hbWUoZXhlY19z
dGF0ZSkgeyIKLSAgICAgICAgIiAgaWYgKCFleGVjX3N0YXRlLmZyYW1lQ291bnQoKSkiCi0gICAg
ICAgICIgICAgICByZXR1cm4gdW5kZWZpbmVkOyIKLSAgICAgICAgIiAgdmFyIGZyYW1lID0gZXhl
Y19zdGF0ZS5mcmFtZSgwKTsiCi0gICAgICAgICIgIGlmIChmcmFtZS5mdW5jKCkucmVzb2x2ZWQo
KSAmJiAiCi0gICAgICAgICIgICAgICBmcmFtZS5mdW5jKCkuc2NyaXB0KCkgJiYgIgotICAgICAg
ICAiICAgICAgZnJhbWUuZnVuYygpLnNjcmlwdCgpLm5hbWUoKSkgeyIKLSAgICAgICAgIiAgICBy
ZXR1cm4gZnJhbWUuZnVuYygpLnNjcmlwdCgpLm5hbWUoKTsiCi0gICAgICAgICIgIH0iCi0gICAg
ICAgICJ9IikpOwotICAgIHY4OjpTY3JpcHQ6OkNvbXBpbGUodjg6OlN0cmluZzo6TmV3KGZyYW1l
U291cmNlTmFtZVNvdXJjZSkpLT5SdW4oKTsKLX0KLQotYm9vbCBWOFByb3h5Ojpzb3VyY2VMaW5l
TnVtYmVyKGludCYgcmVzdWx0KQotewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OFV0aWxpdHlDb250ZXh0ID0gVjhQcm94eTo6dXRpbGl0
eUNvbnRleHQoKTsKLSAgICBpZiAodjhVdGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4VXRp
bGl0eUNvbnRleHQpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmcmFtZVNvdXJjZUxp
bmU7Ci0gICAgZnJhbWVTb3VyY2VMaW5lID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3Qo
djhVdGlsaXR5Q29udGV4dC0+R2xvYmFsKCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImZyYW1lU291
cmNlTGluZSIpKSk7Ci0gICAgaWYgKGZyYW1lU291cmNlTGluZS5Jc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSB2ODo6RGVi
dWc6OkNhbGwoZnJhbWVTb3VyY2VMaW5lKTsKLSAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gdmFsdWUtPkludDMyVmFsdWUoKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWOFByb3h5Ojpzb3VyY2VOYW1lKFN0cmluZyYgcmVz
dWx0KQotewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiB2OFV0aWxpdHlDb250ZXh0ID0gdXRpbGl0eUNvbnRleHQoKTsKLSAgICBpZiAodjhV
dGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6
Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4VXRpbGl0eUNvbnRleHQpOwotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPiBmcmFtZVNvdXJjZU5hbWU7Ci0gICAgZnJhbWVTb3VyY2VOYW1l
ID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QodjhVdGlsaXR5Q29udGV4dC0+R2xvYmFs
KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImZyYW1lU291cmNlTmFtZSIpKSk7Ci0gICAgaWYgKGZy
YW1lU291cmNlTmFtZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSB2ODo6RGVidWc6OkNhbGwoZnJhbWVTb3VyY2VOYW1l
KTsKLSAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmVzdWx0ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQog
dm9pZCBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKiBleHRl
bnNpb24pCiB7CiAgICAgLy8gSWYgdGhlIGV4dGVuc2lvbiBleGlzdHMgaW4gb3VyIGxpc3QsIGl0
IHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCBWOC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5o
CShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTYsMTYgKzI5Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgLy8gUHJvY2VzcyBhbnkgcGVuZGluZyBKYXZhU2NyaXB0IGNvbnNvbGUgbWVzc2FnZXMuCiAg
ICAgICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NDb25zb2xlTWVzc2FnZXMoKTsKIAotICAgICAgICAv
LyBGdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgbGluZSBudW1iZXIgYW5kIHNvdXJjZSBuYW1l
IGZvciB0aGUgdG9wCi0gICAgICAgIC8vIEphdmFTY3JpcHQgc3RhY2sgZnJhbWUuCi0gICAgICAg
IC8vCi0gICAgICAgIC8vIEl0IHdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIGxpbmUgbnVtYmVyIHdh
cyBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGFuZCB3cml0dGVuCi0gICAgICAgIC8vIGludG8gdGhl
IHxyZXN1bHR8IHBhcmFtZXRlciwgb3RoZXJ3aXNlIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBm
YWxzZS4gSXQgbWF5Ci0gICAgICAgIC8vIGZhaWwgZHVlIHRvIGEgc3RjayBvdmVyZmxvdyBpbiB0
aGUgdW5kZXJseWluZyBKYXZhU2NyaXB0IGltcGxlbnRhdGlvbiwgaGFuZGxpbmcKLSAgICAgICAg
Ly8gb2Ygc3VjaCBleGNlcHRpb24gaXMgdXAgdG8gdGhlIGNhbGxlci4KLSAgICAgICAgc3RhdGlj
IGJvb2wgc291cmNlTGluZU51bWJlcihpbnQmIHJlc3VsdCk7Ci0gICAgICAgIHN0YXRpYyBib29s
IHNvdXJjZU5hbWUoU3RyaW5nJiByZXN1bHQpOwotCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gY29udGV4dCgpOwogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1haW5Xb3Js
ZENvbnRleHQoKTsKIApAQCAtMzU2LDIzICszNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc3ZnRXhjZXB0aW9uTmFtZShpbnQgZXhjZXB0aW9u
Q29kZSk7CiAjZW5kaWYKIAotICAgICAgICBzdGF0aWMgdm9pZCBjcmVhdGVVdGlsaXR5Q29udGV4
dCgpOwotCi0gICAgICAgIC8vIFJldHVybnMgYSBsb2NhbCBoYW5kbGUgb2YgdGhlIHV0aWxpdHkg
Y29udGV4dC4KLSAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdXRpbGl0eUNv
bnRleHQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV91dGlsaXR5Q29udGV4dC5Jc0Vt
cHR5KCkpCi0gICAgICAgICAgICAgICAgY3JlYXRlVXRpbGl0eUNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGlsaXR5Q29udGV4dCk7
Ci0gICAgICAgIH0KLQogICAgICAgICBGcmFtZSogbV9mcmFtZTsKIAogICAgICAgICAvLyBGb3Ig
dGhlIG1vbWVudCwgd2UgaGF2ZSBvbmUgb2YgdGhlc2UuICBTb29uIHdlIHdpbGwgaGF2ZSBvbmUg
cGVyIERPTVdyYXBwZXJXb3JsZC4KICAgICAgICAgUmVmUHRyPFY4RE9NV2luZG93U2hlbGw+IG1f
d2luZG93U2hlbGw7Ci0gICAgICAgIAotICAgICAgICAvLyBVdGlsaXR5IGNvbnRleHQgaG9sZGlu
ZyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkuCi0gICAgICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV91dGlsaXR5Q29udGV4dDsKIAogICAgICAgICBp
bnQgbV9oYW5kbGVyTGluZU51bWJlcjsKIApJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwCShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUvaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUx
LDExIEBAIFNjcmlwdE9iamVjdCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWEKIAogICAgIFN0
cmluZyBzb3VyY2VOYW1lOwogICAgIGludCBzb3VyY2VMaW5lTnVtYmVyOwotICAgIGlmIChTY3Jp
cHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbigmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIp
ICYmIHNvdXJjZU5hbWUgIT0gInVuZGVmaW5lZCIpIHsKKyAgICBTdHJpbmcgZnVuY05hbWU7Cisg
ICAgaWYgKFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKCZzb3VyY2VOYW1lLCAmc291cmNl
TGluZU51bWJlciwgJmZ1bmNOYW1lKSAmJiBzb3VyY2VOYW1lICE9ICJ1bmRlZmluZWQiKSB7CiAg
ICAgICAgIHJlY29yZC5zZXQoImNhbGxlclNjcmlwdE5hbWUiLCBzb3VyY2VOYW1lKTsKICAgICAg
ICAgcmVjb3JkLnNldCgiY2FsbGVyU2NyaXB0TGluZSIsIHNvdXJjZUxpbmVOdW1iZXIpOworICAg
ICAgICByZWNvcmQuc2V0KCJjYWxsZXJGdW5jTmFtZSIsIGZ1bmNOYW1lKTsKICAgICB9CiAgICAg
cmV0dXJuIHJlY29yZDsKIH0KSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10
ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0
LmpzCShyZXZpc2lvbiA1NzE1NikKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10
ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBAIHZhciB0aW1lbGluZU5vbkRl
dGVybWluaXN0aWNQcm9wcyA9IHsgCiAgICAgd2lkdGggOiAxLAogICAgIGNhbGxlclNjcmlwdE5h
bWU6IDEsCiAgICAgY2FsbGVyU2NyaXB0TGluZTogMSwKKyAgICBjYWxsZXJGdW5jTmFtZTogMSwK
ICAgICB1cmwgOiAxLAogICAgIHVzZWRIZWFwU2l6ZTogMSwKICAgICB0b3RhbEhlYXBTaXplOiAx
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52668</attachid>
            <date>2010-04-06 14:36:26 -0700</date>
            <delta_ts>2010-04-07 12:53:19 -0700</delta_ts>
            <desc>Renamed stuff according to feedback. Fixed WebKit style issues.</desc>
            <filename>function_name_v5.patch</filename>
            <type>text/plain</type>
            <size>17537</size>
            <attacher>jaimeyap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzE2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMDYgIEphaW1lIFlhcCAgPGphaW1leWFwQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyB0aGUgYWJpbGl0eSB0byBnZXQgdGhlIGZ1bmN0aW9uIHN5bWJvbCBuYW1lIHdoZW4gbG9va2lu
ZyB1cCB0aGUgY2FsbCBsb2NhdGlvbgorICAgICAgICBmb3IgcmVjb3JkcyBzZW50IGJ5IHRoZSBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzY4MzkKKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZVV0
aWxpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpsYXN0
Q2FsbEZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnV0aWxpdHlDb250ZXh0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNS
ZWNvcmQpOgorCiAyMDEwLTA0LTA2ICBFdmFuIFN0YWRlICA8ZXN0YWRlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwCShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcg
KzEwMSw3IEBAIHZvaWQgU2NyaXB0Q2FsbFN0YWNrOjppbml0aWFsaXplKCkKICAgICBtX2luaXRp
YWxpemVkID0gdHJ1ZTsKIH0KIAotYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihT
dHJpbmcqLCBpbnQqKQorYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcq
LCBpbnQqLCBTdHJpbmcqKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gZnJhbWUgcmV0cmlldmFsIG1ldGhv
ZHMKICAgICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZhdCh1bnNpZ25lZCk7CiAgICAgICAg
IHVuc2lnbmVkIHNpemUoKTsKLSAgICAgICAgc3RhdGljIGJvb2wgY2FsbExvY2F0aW9uKFN0cmlu
ZyosIGludCopOworICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiwgaW50
KiwgU3RyaW5nKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDU3
MTU2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwzMiArMzIsMzMgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
IAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1Nl
cnZlci5oIgogCiAjaW5jbHVkZSA8djguaD4KIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2lu
Y2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JpcHRDYWxsU3Rh
Y2sqIFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50
cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpIHsKICAgICBTdHJpbmcgc291cmNlTmFtZTsK
ICAgICBpbnQgc291cmNlTGluZU51bWJlcjsKLSAgICBpZiAoIWNhbGxMb2NhdGlvbigmc291cmNl
TmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIpKQorICAgIFN0cmluZyBmdW5jTmFtZTsKKyAgICBpZiAo
IWNhbGxMb2NhdGlvbigmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jTmFtZSkp
CiAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFjayhhcmd1bWVu
dHMsIHNraXBBcmd1bWVudENvdW50LCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyKTsKKyAg
ICByZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFjayhhcmd1bWVudHMsIHNraXBBcmd1bWVudENvdW50
LCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyLCBmdW5jTmFtZSk7CiB9CiAKLWJvb2wgU2Ny
aXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJj
ZUxpbmVOdW1iZXIpCitib29sIFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKFN0cmluZyog
c291cmNlTmFtZSwgaW50KiBzb3VyY2VMaW5lTnVtYmVyLCBTdHJpbmcqIGZ1bmN0aW9uTmFtZSkK
IHsKLSAgICBpZiAoIVY4UHJveHk6OnNvdXJjZU5hbWUoKnNvdXJjZU5hbWUpIHx8ICFWOFByb3h5
Ojpzb3VyY2VMaW5lTnVtYmVyKCpzb3VyY2VMaW5lTnVtYmVyKSkKKyAgICBpZiAoIVNjcmlwdERl
YnVnU2VydmVyOjp0b3BTdGFja0ZyYW1lKCpzb3VyY2VOYW1lLCAqc291cmNlTGluZU51bWJlciwg
KmZ1bmN0aW9uTmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqc291cmNlTGluZU51
bWJlciArPSAxOwogICAgIHJldHVybiB0cnVlOwogfQogCi1TY3JpcHRDYWxsU3RhY2s6OlNjcmlw
dENhbGxTdGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBB
cmd1bWVudENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIpCi0g
ICAgOiBtX2xhc3RDYWxsZXIoU3RyaW5nKCksIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIs
IGFyZ3VtZW50cywgc2tpcEFyZ3VtZW50Q291bnQpCitTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENh
bGxTdGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1
bWVudENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIsIFN0cmlu
ZyBmdW5jdGlvbk5hbWUpCisgICAgOiBtX2xhc3RDYWxsZXIoZnVuY3Rpb25OYW1lLCBzb3VyY2VO
YW1lLCBzb3VyY2VMaW5lTnVtYmVyLCBhcmd1bWVudHMsIHNraXBBcmd1bWVudENvdW50KQogICAg
ICwgbV9zY3JpcHRTdGF0ZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpKQogewogfQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcg
KzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgU2NyaXB0Q2FsbFN0
YWNrKiBjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYsIHVuc2lnbmVkIHNraXBBcmd1bWVudENv
dW50ID0gMCk7CiAgICAgICAgIH5TY3JpcHRDYWxsU3RhY2soKTsKIAotICAgICAgICBzdGF0aWMg
Ym9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1i
ZXIpOworICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1l
LCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKTsKIAogICAgICAg
ICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGF0KHVuc2lnbmVkKSBjb25zdDsKICAgICAgICAgLy8g
RklYTUU6IGltcGxlbWVudCByZXRyaWV2aW5nIGFuZCBzdG9yaW5nIGNhbGwgc3RhY2sgdHJhY2UK
QEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JpcHRTdGF0
ZSogZ2xvYmFsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICBTY3JpcHRDYWxsU3RhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
dW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCwgU3RyaW5nIHNvdXJjZU5hbWUsIGlu
dCBzb3VyY2VMaW5lTnVtYmVyKTsKKyAgICAgICAgU2NyaXB0Q2FsbFN0YWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIFN0cmluZyBz
b3VyY2VOYW1lLCBpbnQgc291cmNlTGluZU51bWJlciwgU3RyaW5nIGZ1bmNOYW1lKTsKICAgICAK
ICAgICAgICAgU2NyaXB0Q2FsbEZyYW1lIG1fbGFzdENhbGxlcjsKICAgICAgICAgU2NyaXB0U3Rh
dGUqIG1fc2NyaXB0U3RhdGU7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTYgKzMzLDc2IEBACiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIAorI2luY2x1ZGUgIlY4QmluZGluZy5oIgor
I2luY2x1ZGUgPHY4LWRlYnVnLmg+CisKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IFNjcmlw
dERlYnVnU2VydmVyOjpzX3V0aWxpdHlDb250ZXh0OworCiBTY3JpcHREZWJ1Z1NlcnZlciYgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3Jp
cHREZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7CiAgICAgcmV0dXJuIHNlcnZlcjsKIH0KIAorLy8g
Q3JlYXRlIHRoZSB1dGlsaXR5IGNvbnRleHQgZm9yIGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlv
bnMgdXNlZCBpbnRlcm5hbGx5CisvLyB3aGljaCBhcmUgbm90IHZpc2libGUgdG8gSmF2YVNjcmlw
dCBleGVjdXRpbmcgb24gdGhlIHBhZ2UuCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVV
dGlsaXR5Q29udGV4dCgpCit7CisgICAgQVNTRVJUKHNfdXRpbGl0eUNvbnRleHQuSXNFbXB0eSgp
KTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3RUZW1wbGF0ZT4gZ2xvYmFsVGVtcGxhdGUgPSB2ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpOwor
ICAgIHNfdXRpbGl0eUNvbnRleHQgPSB2ODo6Q29udGV4dDo6TmV3KDAsIGdsb2JhbFRlbXBsYXRl
KTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHNfdXRpbGl0eUNvbnRleHQp
OworCisgICAgLy8gQ29tcGlsZSBKYXZhU2NyaXB0IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRo
ZSBzb3VyY2UgbGluZSwgdGhlIHNvdXJjZQorICAgIC8vIG5hbWUgYW5kIHRoZSBzeW1ib2wgbmFt
ZSBmb3IgdGhlIHRvcCBKYXZhU2NyaXB0IHN0YWNrIGZyYW1lLgorICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgY2hhciosIHRvcFN0YWNrRnJhbWUsCisgICAgICAgICgiZnVuY3Rpb24gdG9w
U3RhY2tGcmFtZShleGVjX3N0YXRlKSB7IgorICAgICAgICAiICBpZiAoIWV4ZWNfc3RhdGUuZnJh
bWVDb3VudCgpKSIKKyAgICAgICAgIiAgICAgIHJldHVybiB1bmRlZmluZWQ7IgorICAgICAgICAi
ICB2YXIgZnJhbWUgPSBleGVjX3N0YXRlLmZyYW1lKDApOyIKKyAgICAgICAgIiAgdmFyIGZ1bmMg
PSBmcmFtZS5mdW5jKCk7IgorICAgICAgICAiICB2YXIgc2NyaXB0TmFtZTsiCisgICAgICAgICIg
IGlmIChmdW5jLnJlc29sdmVkKCkgJiYgZnVuYy5zY3JpcHQoKSkiCisgICAgICAgICIgICAgICBz
Y3JpcHROYW1lID0gZnVuYy5zY3JpcHQoKS5uYW1lKCk7IgorICAgICAgICAiICByZXR1cm4gW3Nj
cmlwdE5hbWUsIGZyYW1lLnNvdXJjZUxpbmUoKSwgKGZ1bmMubmFtZSgpIHx8IGZ1bmMuaW5mZXJy
ZWROYW1lKCkpXTsiCisgICAgICAgICJ9IikpOworICAgIHY4OjpTY3JpcHQ6OkNvbXBpbGUodjg6
OlN0cmluZzo6TmV3KHRvcFN0YWNrRnJhbWUpKS0+UnVuKCk7Cit9CisKK2Jvb2wgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnRvcFN0YWNrRnJhbWUoU3RyaW5nJiBzb3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1i
ZXIsIFN0cmluZyYgZnVuY3Rpb25OYW1lKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OFV0aWxpdHlDb250ZXh0ID0gdXRpbGl0eUNv
bnRleHQoKTsKKyAgICBpZiAodjhVdGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4VXRpbGl0
eUNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiB0b3BTdGFja0ZyYW1lOwor
ICAgIHRvcFN0YWNrRnJhbWUgPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdCh2OFV0aWxp
dHlDb250ZXh0LT5HbG9iYWwoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygidG9wU3RhY2tGcmFtZSIp
KSk7CisgICAgaWYgKHRvcFN0YWNrRnJhbWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gdjg6OkRlYnVnOjpDYWxsKHRv
cFN0YWNrRnJhbWUpOworICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsgICAgCisgICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGpzQXJyYXkgPSB2YWx1ZS0+VG9PYmplY3Qo
KTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzb3VyY2VOYW1lVmFsdWUgPSBqc0FycmF5LT5H
ZXQoMCk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGluZU51bWJlclZhbHVlID0ganNBcnJh
eS0+R2V0KDEpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGZ1bmN0aW9uTmFtZVZhbHVlID0g
anNBcnJheS0+R2V0KDIpOworICAgIGlmIChzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpIHx8IGxp
bmVOdW1iZXJWYWx1ZS5Jc0VtcHR5KCkgfHwgZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7ICAKKyAgICBzb3VyY2VOYW1lID0gdG9XZWJDb3JlU3RyaW5n
KHNvdXJjZU5hbWVWYWx1ZSk7CisgICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXJWYWx1ZS0+SW50
MzJWYWx1ZSgpOworICAgIGZ1bmN0aW9uTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlvbk5h
bWVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDE1IEBAIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7CiBjbGFzcyBTY3JpcHREZWJ1Z1Nl
cnZlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFNjcmlwdERl
YnVnU2VydmVyJiBzaGFyZWQoKTsKKyAgICAKKyAgICAvLyBGdW5jdGlvbiBmb3IgcmV0cmlldmlu
ZyB0aGUgc291cmNlIG5hbWUsIGxpbmUgbnVtYmVyIGFuZCBmdW5jdGlvbiBuYW1lIGZvciB0aGUg
dG9wCisgICAgLy8gSmF2YVNjcmlwdCBzdGFjayBmcmFtZS4KKyAgICAvLworICAgIC8vIEl0IHdp
bGwgcmV0dXJuIHRydWUgaWYgdGhlIGNhbGxlciBpbmZvcm1hdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5
IHJldHJpZXZlZCBhbmQgd3JpdHRlbgorICAgIC8vIGludG8gdGhlIGZ1bmN0aW9uIHBhcmFtZXRl
cnMsIG90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UuIEl0IG1heQorICAg
IC8vIGZhaWwgZHVlIHRvIGEgc3RjayBvdmVyZmxvdyBpbiB0aGUgdW5kZXJseWluZyBKYXZhU2Ny
aXB0IGltcGxlbnRhdGlvbiwgaGFuZGxpbmcKKyAgICAvLyBvZiBzdWNoIGV4Y2VwdGlvbiBpcyB1
cCB0byB0aGUgY2FsbGVyLgorICAgIHN0YXRpYyBib29sIHRvcFN0YWNrRnJhbWUoU3RyaW5nJiBz
b3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1iZXIsIFN0cmluZyYgZnVuY3Rpb25OYW1lKTsKIAogICAg
IHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFBhZ2UqKSB7IH0KICAgICB2
b2lkIHJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKikgeyB9CkBAIC04
MCw2ICs4OSwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNjcmlwdERlYnVnU2VydmVyKCkg
eyB9CiAgICAgflNjcmlwdERlYnVnU2VydmVyKCkgeyB9CisKKyAgICBzdGF0aWMgdm9pZCBjcmVh
dGVVdGlsaXR5Q29udGV4dCgpOworCisgICAgLy8gUmV0dXJucyBhIGxvY2FsIGhhbmRsZSBvZiB0
aGUgdXRpbGl0eSBjb250ZXh0LgorICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHV0
aWxpdHlDb250ZXh0KCkKKyAgICB7CisgICAgICBpZiAoc191dGlsaXR5Q29udGV4dC5Jc0VtcHR5
KCkpCisgICAgICAgICAgY3JlYXRlVXRpbGl0eUNvbnRleHQoKTsKKyAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoc191dGlsaXR5Q29udGV4dCk7CisgICAgfQorCisgICAg
Ly8gVXRpbGl0eSBjb250ZXh0IGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5LgorICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gc191dGlsaXR5
Q29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmNwcAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHY4Lmg+Ci0jaW5jbHVkZSA8djgtZGVi
dWcuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJh
eVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTc3LDggKzc2LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gVjhQ
cm94eTo6bV91dGlsaXR5Q29udGV4dDsKLQogLy8gU3RhdGljIGxpc3Qgb2YgcmVnaXN0ZXJlZCBl
eHRlbnNpb25zCiBWOEV4dGVuc2lvbnMgVjhQcm94eTo6bV9leHRlbnNpb25zOwogCkBAIC03NTUs
NzkgKzc1Miw2IEBAIHZvaWQgVjhQcm94eTo6cHJvY2Vzc0NvbnNvbGVNZXNzYWdlcygpCiAgICAg
VjhDb25zb2xlTWVzc2FnZTo6cHJvY2Vzc0RlbGF5ZWQoKTsKIH0KIAotLy8gQ3JlYXRlIHRoZSB1
dGlsaXR5IGNvbnRleHQgZm9yIGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5Ci0vLyB3aGljaCBhcmUgbm90IHZpc2libGUgdG8gSmF2YVNjcmlwdCBleGVjdXRpbmcg
b24gdGhlIHBhZ2UuCi12b2lkIFY4UHJveHk6OmNyZWF0ZVV0aWxpdHlDb250ZXh0KCkKLXsKLSAg
ICBBU1NFUlQobV91dGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpOwotCi0gICAgdjg6OkhhbmRsZVNj
b3BlIHNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBnbG9iYWxUZW1w
bGF0ZSA9IHY4OjpPYmplY3RUZW1wbGF0ZTo6TmV3KCk7Ci0gICAgbV91dGlsaXR5Q29udGV4dCA9
IHY4OjpDb250ZXh0OjpOZXcoMCwgZ2xvYmFsVGVtcGxhdGUpOwotICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBjb250ZXh0U2NvcGUobV91dGlsaXR5Q29udGV4dCk7Ci0KLSAgICAvLyBDb21waWxlIEph
dmFTY3JpcHQgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHNvdXJjZSBsaW5lIG9mIHRoZSB0
b3AKLSAgICAvLyBKYXZhU2NyaXB0IHN0YWNrIGZyYW1lLgotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgY2hhciosIGZyYW1lU291cmNlTGluZVNvdXJjZSwKLSAgICAgICAgKCJmdW5jdGlv
biBmcmFtZVNvdXJjZUxpbmUoZXhlY19zdGF0ZSkgeyIKLSAgICAgICAgIiAgaWYgKCFleGVjX3N0
YXRlLmZyYW1lQ291bnQoKSkiCi0gICAgICAgICIgICAgICByZXR1cm4gdW5kZWZpbmVkOyIKLSAg
ICAgICAgIiAgcmV0dXJuIGV4ZWNfc3RhdGUuZnJhbWUoMCkuc291cmNlTGluZSgpOyIKLSAgICAg
ICAgIn0iKSk7Ci0gICAgdjg6OlNjcmlwdDo6Q29tcGlsZSh2ODo6U3RyaW5nOjpOZXcoZnJhbWVT
b3VyY2VMaW5lU291cmNlKSktPlJ1bigpOwotCi0gICAgLy8gQ29tcGlsZSBKYXZhU2NyaXB0IGZ1
bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBzb3VyY2UgbmFtZSBvZiB0aGUgdG9wCi0gICAgLy8g
SmF2YVNjcmlwdCBzdGFjayBmcmFtZS4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IGNo
YXIqLCBmcmFtZVNvdXJjZU5hbWVTb3VyY2UsCi0gICAgICAgICgiZnVuY3Rpb24gZnJhbWVTb3Vy
Y2VOYW1lKGV4ZWNfc3RhdGUpIHsiCi0gICAgICAgICIgIGlmICghZXhlY19zdGF0ZS5mcmFtZUNv
dW50KCkpIgotICAgICAgICAiICAgICAgcmV0dXJuIHVuZGVmaW5lZDsiCi0gICAgICAgICIgIHZh
ciBmcmFtZSA9IGV4ZWNfc3RhdGUuZnJhbWUoMCk7IgotICAgICAgICAiICBpZiAoZnJhbWUuZnVu
YygpLnJlc29sdmVkKCkgJiYgIgotICAgICAgICAiICAgICAgZnJhbWUuZnVuYygpLnNjcmlwdCgp
ICYmICIKLSAgICAgICAgIiAgICAgIGZyYW1lLmZ1bmMoKS5zY3JpcHQoKS5uYW1lKCkpIHsiCi0g
ICAgICAgICIgICAgcmV0dXJuIGZyYW1lLmZ1bmMoKS5zY3JpcHQoKS5uYW1lKCk7IgotICAgICAg
ICAiICB9IgotICAgICAgICAifSIpKTsKLSAgICB2ODo6U2NyaXB0OjpDb21waWxlKHY4OjpTdHJp
bmc6Ok5ldyhmcmFtZVNvdXJjZU5hbWVTb3VyY2UpKS0+UnVuKCk7Ci19Ci0KLWJvb2wgVjhQcm94
eTo6c291cmNlTGluZU51bWJlcihpbnQmIHJlc3VsdCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUg
c2NvcGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhVdGlsaXR5Q29udGV4dCA9IFY4
UHJveHk6OnV0aWxpdHlDb250ZXh0KCk7Ci0gICAgaWYgKHY4VXRpbGl0eUNvbnRleHQuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRl
eHRTY29wZSh2OFV0aWxpdHlDb250ZXh0KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4g
ZnJhbWVTb3VyY2VMaW5lOwotICAgIGZyYW1lU291cmNlTGluZSA9IHY4OjpMb2NhbDx2ODo6RnVu
Y3Rpb24+OjpDYXN0KHY4VXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpLT5HZXQodjg6OlN0cmluZzo6
TmV3KCJmcmFtZVNvdXJjZUxpbmUiKSkpOwotICAgIGlmIChmcmFtZVNvdXJjZUxpbmUuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlID0gdjg6OkRlYnVnOjpDYWxsKGZyYW1lU291cmNlTGluZSk7Ci0gICAgaWYgKHZhbHVlLklz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9IHZhbHVlLT5JbnQz
MlZhbHVlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVjhQcm94eTo6c291cmNlTmFt
ZShTdHJpbmcmIHJlc3VsdCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhVdGlsaXR5Q29udGV4dCA9IHV0aWxpdHlDb250ZXh0KCk7
Ci0gICAgaWYgKHY4VXRpbGl0eUNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2OFV0aWxpdHlDb250ZXh0
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnJhbWVTb3VyY2VOYW1lOwotICAgIGZy
YW1lU291cmNlTmFtZSA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KHY4VXRpbGl0eUNv
bnRleHQtPkdsb2JhbCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJmcmFtZVNvdXJjZU5hbWUiKSkp
OwotICAgIGlmIChmcmFtZVNvdXJjZU5hbWUuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gdjg6OkRlYnVnOjpDYWxsKGZy
YW1lU291cmNlTmFtZSk7Ci0gICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJlc3VsdCA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KIHZvaWQgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgodjg6OkV4
dGVuc2lvbiogZXh0ZW5zaW9uKQogewogICAgIC8vIElmIHRoZSBleHRlbnNpb24gZXhpc3RzIGlu
IG91ciBsaXN0LCBpdCB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggVjguCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuaAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDE2ICsyOTYsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIFByb2Nlc3MgYW55IHBlbmRpbmcgSmF2YVNjcmlwdCBjb25zb2xl
IG1lc3NhZ2VzLgogICAgICAgICBzdGF0aWMgdm9pZCBwcm9jZXNzQ29uc29sZU1lc3NhZ2VzKCk7
CiAKLSAgICAgICAgLy8gRnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIGxpbmUgbnVtYmVyIGFu
ZCBzb3VyY2UgbmFtZSBmb3IgdGhlIHRvcAotICAgICAgICAvLyBKYXZhU2NyaXB0IHN0YWNrIGZy
YW1lLgotICAgICAgICAvLwotICAgICAgICAvLyBJdCB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBs
aW5lIG51bWJlciB3YXMgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBhbmQgd3JpdHRlbgotICAgICAg
ICAvLyBpbnRvIHRoZSB8cmVzdWx0fCBwYXJhbWV0ZXIsIG90aGVyd2lzZSB0aGUgZnVuY3Rpb24g
d2lsbCByZXR1cm4gZmFsc2UuIEl0IG1heQotICAgICAgICAvLyBmYWlsIGR1ZSB0byBhIHN0Y2sg
b3ZlcmZsb3cgaW4gdGhlIHVuZGVybHlpbmcgSmF2YVNjcmlwdCBpbXBsZW50YXRpb24sIGhhbmRs
aW5nCi0gICAgICAgIC8vIG9mIHN1Y2ggZXhjZXB0aW9uIGlzIHVwIHRvIHRoZSBjYWxsZXIuCi0g
ICAgICAgIHN0YXRpYyBib29sIHNvdXJjZUxpbmVOdW1iZXIoaW50JiByZXN1bHQpOwotICAgICAg
ICBzdGF0aWMgYm9vbCBzb3VyY2VOYW1lKFN0cmluZyYgcmVzdWx0KTsKLQogICAgICAgICB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQoKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBtYWluV29ybGRDb250ZXh0KCk7CiAKQEAgLTM1NiwyMyArMzQ2LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN2Z0V4Y2VwdGlvbk5hbWUo
aW50IGV4Y2VwdGlvbkNvZGUpOwogI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIHZvaWQgY3JlYXRl
VXRpbGl0eUNvbnRleHQoKTsKLQotICAgICAgICAvLyBSZXR1cm5zIGEgbG9jYWwgaGFuZGxlIG9m
IHRoZSB1dGlsaXR5IGNvbnRleHQuCi0gICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+IHV0aWxpdHlDb250ZXh0KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fdXRpbGl0
eUNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNyZWF0ZVV0aWxpdHlDb250ZXh0
KCk7Ci0gICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fdXRp
bGl0eUNvbnRleHQpOwotICAgICAgICB9Ci0KICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAKICAg
ICAgICAgLy8gRm9yIHRoZSBtb21lbnQsIHdlIGhhdmUgb25lIG9mIHRoZXNlLiAgU29vbiB3ZSB3
aWxsIGhhdmUgb25lIHBlciBET01XcmFwcGVyV29ybGQuCiAgICAgICAgIFJlZlB0cjxWOERPTVdp
bmRvd1NoZWxsPiBtX3dpbmRvd1NoZWxsOwotICAgICAgICAKLSAgICAgICAgLy8gVXRpbGl0eSBj
b250ZXh0IGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5LgotICAg
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fdXRpbGl0eUNvbnRleHQ7
CiAKICAgICAgICAgaW50IG1faGFuZGxlckxpbmVOdW1iZXI7CiAKSW5kZXg6IFdlYkNvcmUvaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9p
bnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAkocmV2aXNpb24gNTcxNTYpCisrKyBX
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw5ICs1MSwxMSBAQCBTY3JpcHRPYmplY3QgVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhCiAKICAgICBTdHJpbmcgc291cmNlTmFtZTsKICAgICBpbnQgc291cmNlTGluZU51bWJlcjsK
LSAgICBpZiAoU2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24oJnNvdXJjZU5hbWUsICZzb3Vy
Y2VMaW5lTnVtYmVyKSAmJiBzb3VyY2VOYW1lICE9ICJ1bmRlZmluZWQiKSB7CisgICAgU3RyaW5n
IGZ1bmN0aW9uTmFtZTsKKyAgICBpZiAoU2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24oJnNv
dXJjZU5hbWUsICZzb3VyY2VMaW5lTnVtYmVyLCAmZnVuY3Rpb25OYW1lKSAmJiBzb3VyY2VOYW1l
ICE9ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgIHJlY29yZC5zZXQoImNhbGxlclNjcmlwdE5hbWUi
LCBzb3VyY2VOYW1lKTsKICAgICAgICAgcmVjb3JkLnNldCgiY2FsbGVyU2NyaXB0TGluZSIsIHNv
dXJjZUxpbmVOdW1iZXIpOworICAgICAgICByZWNvcmQuc2V0KCJjYWxsZXJGdW5jdGlvbk5hbWUi
LCBmdW5jdGlvbk5hbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVjb3JkOwogfQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNTcxNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wNiAgSmFpbWUgWWFwICA8amFpbWV5YXBAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRzIGNhbGxlckZ1bmNOYW1lIHRvIHRoZSBsaXN0IG9mIG5vbmRldGVybWluaXN0aWMgZmllbGRz
IGluIHRoZSB0aW1lbGluZQorICAgICAgICBsYXlvdXQgdGVzdHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjgzOQorCisgICAgICAgICogaW5zcGVj
dG9yL3RpbWVsaW5lLXRlc3QuanM6CisKIDIwMTAtMDQtMDEgIFl1em8gRnVqaXNoaW1hICA8eXV6
b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDog
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanMJKHJldmlzaW9uIDU3MTU2KQorKysg
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEwLDYgKzEwLDcgQEAgdmFyIHRpbWVsaW5lTm9uRGV0ZXJtaW5pc3RpY1Byb3BzID0geyAKICAg
ICB3aWR0aCA6IDEsCiAgICAgY2FsbGVyU2NyaXB0TmFtZTogMSwKICAgICBjYWxsZXJTY3JpcHRM
aW5lOiAxLAorICAgIGNhbGxlckZ1bmN0aW9uTmFtZTogMSwKICAgICB1cmwgOiAxLAogICAgIHVz
ZWRIZWFwU2l6ZTogMSwKICAgICB0b3RhbEhlYXBTaXplOiAxLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52773</attachid>
            <date>2010-04-07 12:53:19 -0700</date>
            <delta_ts>2010-04-07 14:20:59 -0700</delta_ts>
            <desc>Fixes layout test failures.</desc>
            <filename>function_name_v6.patch</filename>
            <type>text/plain</type>
            <size>21212</size>
            <attacher>jaimeyap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzIyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMDcgIEphaW1lIFlhcCAgPGphaW1leWFwQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyB0aGUgYWJpbGl0eSB0byBnZXQgdGhlIGZ1bmN0aW9uIHN5bWJvbCBuYW1lIHdoZW4gbG9va2lu
ZyB1cCB0aGUgY2FsbCBsb2NhdGlvbgorICAgICAgICBmb3IgcmVjb3JkcyBzZW50IGJ5IHRoZSBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzY4MzkKKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZVV0
aWxpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp0b3BT
dGFja0ZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnV0aWxpdHlDb250ZXh0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNS
ZWNvcmQpOgorCiAyMDEwLTA0LTA3ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwCShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgU2NyaXB0Q2FsbFN0YWNrOjppbml0aWFsaXplKCkKICAgICBtX2luaXRpYWxp
emVkID0gdHJ1ZTsKIH0KIAotYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJp
bmcqLCBpbnQqKQorYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihTdHJpbmcqLCBp
bnQqLCBTdHJpbmcqKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDYWxsU3RhY2suaAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gZnJhbWUgcmV0cmlldmFsIG1ldGhvZHMK
ICAgICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZhdCh1bnNpZ25lZCk7CiAgICAgICAgIHVu
c2lnbmVkIHNpemUoKTsKLSAgICAgICAgc3RhdGljIGJvb2wgY2FsbExvY2F0aW9uKFN0cmluZyos
IGludCopOworICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiwgaW50Kiwg
U3RyaW5nKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDU3MTU2
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwzMiArMzIsMzMgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKIAog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZl
ci5oIgogCiAjaW5jbHVkZSA8djguaD4KIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1
ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JpcHRDYWxsU3RhY2sq
IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywg
dW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpIHsKICAgICBTdHJpbmcgc291cmNlTmFtZTsKICAg
ICBpbnQgc291cmNlTGluZU51bWJlcjsKLSAgICBpZiAoIWNhbGxMb2NhdGlvbigmc291cmNlTmFt
ZSwgJnNvdXJjZUxpbmVOdW1iZXIpKQorICAgIFN0cmluZyBmdW5jTmFtZTsKKyAgICBpZiAoIWNh
bGxMb2NhdGlvbigmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jTmFtZSkpCiAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFjayhhcmd1bWVudHMs
IHNraXBBcmd1bWVudENvdW50LCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyKTsKKyAgICBy
ZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFjayhhcmd1bWVudHMsIHNraXBBcmd1bWVudENvdW50LCBz
b3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyLCBmdW5jTmFtZSk7CiB9CiAKLWJvb2wgU2NyaXB0
Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxp
bmVOdW1iZXIpCitib29sIFNjcmlwdENhbGxTdGFjazo6Y2FsbExvY2F0aW9uKFN0cmluZyogc291
cmNlTmFtZSwgaW50KiBzb3VyY2VMaW5lTnVtYmVyLCBTdHJpbmcqIGZ1bmN0aW9uTmFtZSkKIHsK
LSAgICBpZiAoIVY4UHJveHk6OnNvdXJjZU5hbWUoKnNvdXJjZU5hbWUpIHx8ICFWOFByb3h5Ojpz
b3VyY2VMaW5lTnVtYmVyKCpzb3VyY2VMaW5lTnVtYmVyKSkKKyAgICBpZiAoIVNjcmlwdERlYnVn
U2VydmVyOjp0b3BTdGFja0ZyYW1lKCpzb3VyY2VOYW1lLCAqc291cmNlTGluZU51bWJlciwgKmZ1
bmN0aW9uTmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqc291cmNlTGluZU51bWJl
ciArPSAxOwogICAgIHJldHVybiB0cnVlOwogfQogCi1TY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENh
bGxTdGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1
bWVudENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIpCi0gICAg
OiBtX2xhc3RDYWxsZXIoU3RyaW5nKCksIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIsIGFy
Z3VtZW50cywgc2tpcEFyZ3VtZW50Q291bnQpCitTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxT
dGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVu
dENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyBm
dW5jdGlvbk5hbWUpCisgICAgOiBtX2xhc3RDYWxsZXIoZnVuY3Rpb25OYW1lLCBzb3VyY2VOYW1l
LCBzb3VyY2VMaW5lTnVtYmVyLCBhcmd1bWVudHMsIHNraXBBcmd1bWVudENvdW50KQogICAgICwg
bV9zY3JpcHRTdGF0ZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpKQogewogfQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCShyZXZpc2lvbiA1NzE1NikKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgU2NyaXB0Q2FsbFN0YWNr
KiBjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50
ID0gMCk7CiAgICAgICAgIH5TY3JpcHRDYWxsU3RhY2soKTsKIAotICAgICAgICBzdGF0aWMgYm9v
bCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIp
OworICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1lLCBp
bnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKTsKIAogICAgICAgICBj
b25zdCBTY3JpcHRDYWxsRnJhbWUmIGF0KHVuc2lnbmVkKSBjb25zdDsKICAgICAgICAgLy8gRklY
TUU6IGltcGxlbWVudCByZXRyaWV2aW5nIGFuZCBzdG9yaW5nIGNhbGwgc3RhY2sgdHJhY2UKQEAg
LTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JpcHRTdGF0ZSog
Z2xvYmFsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBTY3JpcHRDYWxsU3RhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1l
bnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCwgU3RyaW5nIHNvdXJjZU5hbWUsIGludCBz
b3VyY2VMaW5lTnVtYmVyKTsKKyAgICAgICAgU2NyaXB0Q2FsbFN0YWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIFN0cmluZyBzb3Vy
Y2VOYW1lLCBpbnQgc291cmNlTGluZU51bWJlciwgU3RyaW5nIGZ1bmNOYW1lKTsKICAgICAKICAg
ICAgICAgU2NyaXB0Q2FsbEZyYW1lIG1fbGFzdENhbGxlcjsKICAgICAgICAgU2NyaXB0U3RhdGUq
IG1fc2NyaXB0U3RhdGU7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERl
YnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTYgKzMzLDg0IEBACiAKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIAorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2lu
Y2x1ZGUgPHY4LWRlYnVnLmg+CisKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAordjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IFNjcmlwdERl
YnVnU2VydmVyOjpzX3V0aWxpdHlDb250ZXh0OworCiBTY3JpcHREZWJ1Z1NlcnZlciYgU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3JpcHRE
ZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7CiAgICAgcmV0dXJuIHNlcnZlcjsKIH0KIAorLy8gQ3Jl
YXRlIHRoZSB1dGlsaXR5IGNvbnRleHQgZm9yIGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMg
dXNlZCBpbnRlcm5hbGx5CisvLyB3aGljaCBhcmUgbm90IHZpc2libGUgdG8gSmF2YVNjcmlwdCBl
eGVjdXRpbmcgb24gdGhlIHBhZ2UuCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVVdGls
aXR5Q29udGV4dCgpCit7CisgICAgQVNTRVJUKHNfdXRpbGl0eUNvbnRleHQuSXNFbXB0eSgpKTsK
KworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gZ2xvYmFsVGVtcGxhdGUgPSB2ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpOworICAg
IHNfdXRpbGl0eUNvbnRleHQgPSB2ODo6Q29udGV4dDo6TmV3KDAsIGdsb2JhbFRlbXBsYXRlKTsK
KyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHNfdXRpbGl0eUNvbnRleHQpOwor
CisgICAgLy8gQ29tcGlsZSBKYXZhU2NyaXB0IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBz
b3VyY2UgbGluZSwgdGhlIHNvdXJjZQorICAgIC8vIG5hbWUgYW5kIHRoZSBzeW1ib2wgbmFtZSBm
b3IgdGhlIHRvcCBKYXZhU2NyaXB0IHN0YWNrIGZyYW1lLgorICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgY2hhciosIHRvcFN0YWNrRnJhbWUsCisgICAgICAgICgiZnVuY3Rpb24gdG9wU3Rh
Y2tGcmFtZShleGVjX3N0YXRlKSB7IgorICAgICAgICAiICBpZiAoIWV4ZWNfc3RhdGUuZnJhbWVD
b3VudCgpKSIKKyAgICAgICAgIiAgICAgIHJldHVybiB1bmRlZmluZWQ7IgorICAgICAgICAiICB2
YXIgZnJhbWUgPSBleGVjX3N0YXRlLmZyYW1lKDApOyIKKyAgICAgICAgIiAgdmFyIGZ1bmMgPSBm
cmFtZS5mdW5jKCk7IgorICAgICAgICAiICB2YXIgc2NyaXB0TmFtZTsiCisgICAgICAgICIgIGlm
IChmdW5jLnJlc29sdmVkKCkgJiYgZnVuYy5zY3JpcHQoKSkiCisgICAgICAgICIgICAgICBzY3Jp
cHROYW1lID0gZnVuYy5zY3JpcHQoKS5uYW1lKCk7IgorICAgICAgICAiICByZXR1cm4gW3Njcmlw
dE5hbWUsIGZyYW1lLnNvdXJjZUxpbmUoKSwgKGZ1bmMubmFtZSgpIHx8IGZ1bmMuaW5mZXJyZWRO
YW1lKCkpXTsiCisgICAgICAgICJ9IikpOworICAgIHY4OjpTY3JpcHQ6OkNvbXBpbGUodjg6OlN0
cmluZzo6TmV3KHRvcFN0YWNrRnJhbWUpKS0+UnVuKCk7Cit9CisKK2Jvb2wgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnRvcFN0YWNrRnJhbWUoU3RyaW5nJiBzb3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1iZXIs
IFN0cmluZyYgZnVuY3Rpb25OYW1lKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OFV0aWxpdHlDb250ZXh0ID0gdXRpbGl0eUNvbnRl
eHQoKTsKKyAgICBpZiAodjhVdGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4VXRpbGl0eUNv
bnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiB0b3BTdGFja0ZyYW1lOworICAg
IHRvcFN0YWNrRnJhbWUgPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdCh2OFV0aWxpdHlD
b250ZXh0LT5HbG9iYWwoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygidG9wU3RhY2tGcmFtZSIpKSk7
CisgICAgaWYgKHRvcFN0YWNrRnJhbWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gdjg6OkRlYnVnOjpDYWxsKHRvcFN0
YWNrRnJhbWUpOworICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsgICAgCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gdG9wIHN0YWNrIGZyYW1lLCB3ZSBzdGlsbCBy
ZXR1cm4gc3VjY2VzcywgYnV0IGZpbGwgdGhlIGlucHV0IHBhcmFtcyB3aXRoIGRlZmF1bHRzLgor
ICAgIGlmICh2YWx1ZS0+SXNVbmRlZmluZWQoKSkgeworICAgICAgLy8gRmFsbGJhY2sgdG8gc2V0
dGluZyBsaW5lTnVtYmVyIHRvIDAsIGFuZCBzb3VyY2UgYW5kIGZ1bmN0aW9uIG5hbWUgdG8gInVu
ZGVmaW5lZCIuCisgICAgICBzb3VyY2VOYW1lID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKKyAg
ICAgIGxpbmVOdW1iZXIgPSAwOworICAgICAgZnVuY3Rpb25OYW1lID0gdG9XZWJDb3JlU3RyaW5n
KHZhbHVlKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoIXZhbHVlLT5Jc0Fy
cmF5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
anNBcnJheSA9IHZhbHVlLT5Ub09iamVjdCgpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHNv
dXJjZU5hbWVWYWx1ZSA9IGpzQXJyYXktPkdldCgwKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiBsaW5lTnVtYmVyVmFsdWUgPSBqc0FycmF5LT5HZXQoMSk7CisgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gZnVuY3Rpb25OYW1lVmFsdWUgPSBqc0FycmF5LT5HZXQoMik7CisgICAgaWYgKHNvdXJj
ZU5hbWVWYWx1ZS5Jc0VtcHR5KCkgfHwgbGluZU51bWJlclZhbHVlLklzRW1wdHkoKSB8fCBmdW5j
dGlvbk5hbWVWYWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzb3Vy
Y2VOYW1lID0gdG9XZWJDb3JlU3RyaW5nKHNvdXJjZU5hbWVWYWx1ZSk7CisgICAgbGluZU51bWJl
ciA9IGxpbmVOdW1iZXJWYWx1ZS0+SW50MzJWYWx1ZSgpOworICAgIGZ1bmN0aW9uTmFtZSA9IHRv
V2ViQ29yZVN0cmluZyhmdW5jdGlvbk5hbWVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAkocmV2
aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDE1IEBAIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVu
ZXI7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyJiBzaGFyZWQoKTsKKyAgICAKKyAgICAv
LyBGdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgc291cmNlIG5hbWUsIGxpbmUgbnVtYmVyIGFu
ZCBmdW5jdGlvbiBuYW1lIGZvciB0aGUgdG9wCisgICAgLy8gSmF2YVNjcmlwdCBzdGFjayBmcmFt
ZS4KKyAgICAvLworICAgIC8vIEl0IHdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIGNhbGxlciBpbmZv
cm1hdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBhbmQgd3JpdHRlbgorICAgIC8vIGlu
dG8gdGhlIGZ1bmN0aW9uIHBhcmFtZXRlcnMsIG90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCBy
ZXR1cm4gZmFsc2UuIEl0IG1heQorICAgIC8vIGZhaWwgZHVlIHRvIGEgc3RhY2sgb3ZlcmZsb3cg
aW4gdGhlIHVuZGVybHlpbmcgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiwgaGFuZGxpbmcKKyAg
ICAvLyBvZiBzdWNoIGV4Y2VwdGlvbiBpcyB1cCB0byB0aGUgY2FsbGVyLgorICAgIHN0YXRpYyBi
b29sIHRvcFN0YWNrRnJhbWUoU3RyaW5nJiBzb3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1iZXIsIFN0
cmluZyYgZnVuY3Rpb25OYW1lKTsKIAogICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVidWdM
aXN0ZW5lciosIFBhZ2UqKSB7IH0KICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVn
TGlzdGVuZXIqLCBQYWdlKikgeyB9CkBAIC04MCw2ICs4OSwxOSBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFNjcmlwdERlYnVnU2VydmVyKCkgeyB9CiAgICAgflNjcmlwdERlYnVnU2VydmVyKCkg
eyB9CisKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVVdGlsaXR5Q29udGV4dCgpOworCisgICAgLy8g
UmV0dXJucyBhIGxvY2FsIGhhbmRsZSBvZiB0aGUgdXRpbGl0eSBjb250ZXh0LgorICAgIHN0YXRp
YyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHV0aWxpdHlDb250ZXh0KCkKKyAgICB7CisgICAgICBp
ZiAoc191dGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgICAgY3JlYXRlVXRpbGl0eUNv
bnRleHQoKTsKKyAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoc191dGls
aXR5Q29udGV4dCk7CisgICAgfQorCisgICAgLy8gVXRpbGl0eSBjb250ZXh0IGhvbGRpbmcgSmF2
YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5LgorICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6Q29udGV4dD4gc191dGlsaXR5Q29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkocmV2aXNpb24gNTcxNTYpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3
ICs2OCw2IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1
ZGUgPHY4Lmg+Ci0jaW5jbHVkZSA8djgtZGVidWcuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KQEAgLTc3LDggKzc2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6
UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gVjhQcm94eTo6bV91dGlsaXR5Q29udGV4dDsKLQogLy8g
U3RhdGljIGxpc3Qgb2YgcmVnaXN0ZXJlZCBleHRlbnNpb25zCiBWOEV4dGVuc2lvbnMgVjhQcm94
eTo6bV9leHRlbnNpb25zOwogCkBAIC03NTUsNzkgKzc1Miw2IEBAIHZvaWQgVjhQcm94eTo6cHJv
Y2Vzc0NvbnNvbGVNZXNzYWdlcygpCiAgICAgVjhDb25zb2xlTWVzc2FnZTo6cHJvY2Vzc0RlbGF5
ZWQoKTsKIH0KIAotLy8gQ3JlYXRlIHRoZSB1dGlsaXR5IGNvbnRleHQgZm9yIGhvbGRpbmcgSmF2
YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5Ci0vLyB3aGljaCBhcmUgbm90IHZpc2li
bGUgdG8gSmF2YVNjcmlwdCBleGVjdXRpbmcgb24gdGhlIHBhZ2UuCi12b2lkIFY4UHJveHk6OmNy
ZWF0ZVV0aWxpdHlDb250ZXh0KCkKLXsKLSAgICBBU1NFUlQobV91dGlsaXR5Q29udGV4dC5Jc0Vt
cHR5KCkpOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdFRlbXBsYXRlPiBnbG9iYWxUZW1wbGF0ZSA9IHY4OjpPYmplY3RUZW1wbGF0ZTo6TmV3
KCk7Ci0gICAgbV91dGlsaXR5Q29udGV4dCA9IHY4OjpDb250ZXh0OjpOZXcoMCwgZ2xvYmFsVGVt
cGxhdGUpOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUobV91dGlsaXR5Q29u
dGV4dCk7Ci0KLSAgICAvLyBDb21waWxlIEphdmFTY3JpcHQgZnVuY3Rpb24gZm9yIHJldHJpZXZp
bmcgdGhlIHNvdXJjZSBsaW5lIG9mIHRoZSB0b3AKLSAgICAvLyBKYXZhU2NyaXB0IHN0YWNrIGZy
YW1lLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgY2hhciosIGZyYW1lU291cmNlTGlu
ZVNvdXJjZSwKLSAgICAgICAgKCJmdW5jdGlvbiBmcmFtZVNvdXJjZUxpbmUoZXhlY19zdGF0ZSkg
eyIKLSAgICAgICAgIiAgaWYgKCFleGVjX3N0YXRlLmZyYW1lQ291bnQoKSkiCi0gICAgICAgICIg
ICAgICByZXR1cm4gdW5kZWZpbmVkOyIKLSAgICAgICAgIiAgcmV0dXJuIGV4ZWNfc3RhdGUuZnJh
bWUoMCkuc291cmNlTGluZSgpOyIKLSAgICAgICAgIn0iKSk7Ci0gICAgdjg6OlNjcmlwdDo6Q29t
cGlsZSh2ODo6U3RyaW5nOjpOZXcoZnJhbWVTb3VyY2VMaW5lU291cmNlKSktPlJ1bigpOwotCi0g
ICAgLy8gQ29tcGlsZSBKYXZhU2NyaXB0IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBzb3Vy
Y2UgbmFtZSBvZiB0aGUgdG9wCi0gICAgLy8gSmF2YVNjcmlwdCBzdGFjayBmcmFtZS4KLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IGNoYXIqLCBmcmFtZVNvdXJjZU5hbWVTb3VyY2UsCi0g
ICAgICAgICgiZnVuY3Rpb24gZnJhbWVTb3VyY2VOYW1lKGV4ZWNfc3RhdGUpIHsiCi0gICAgICAg
ICIgIGlmICghZXhlY19zdGF0ZS5mcmFtZUNvdW50KCkpIgotICAgICAgICAiICAgICAgcmV0dXJu
IHVuZGVmaW5lZDsiCi0gICAgICAgICIgIHZhciBmcmFtZSA9IGV4ZWNfc3RhdGUuZnJhbWUoMCk7
IgotICAgICAgICAiICBpZiAoZnJhbWUuZnVuYygpLnJlc29sdmVkKCkgJiYgIgotICAgICAgICAi
ICAgICAgZnJhbWUuZnVuYygpLnNjcmlwdCgpICYmICIKLSAgICAgICAgIiAgICAgIGZyYW1lLmZ1
bmMoKS5zY3JpcHQoKS5uYW1lKCkpIHsiCi0gICAgICAgICIgICAgcmV0dXJuIGZyYW1lLmZ1bmMo
KS5zY3JpcHQoKS5uYW1lKCk7IgotICAgICAgICAiICB9IgotICAgICAgICAifSIpKTsKLSAgICB2
ODo6U2NyaXB0OjpDb21waWxlKHY4OjpTdHJpbmc6Ok5ldyhmcmFtZVNvdXJjZU5hbWVTb3VyY2Up
KS0+UnVuKCk7Ci19Ci0KLWJvb2wgVjhQcm94eTo6c291cmNlTGluZU51bWJlcihpbnQmIHJlc3Vs
dCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gdjhVdGlsaXR5Q29udGV4dCA9IFY4UHJveHk6OnV0aWxpdHlDb250ZXh0KCk7Ci0gICAg
aWYgKHY4VXRpbGl0eUNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2OFV0aWxpdHlDb250ZXh0KTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnJhbWVTb3VyY2VMaW5lOwotICAgIGZyYW1lU291
cmNlTGluZSA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KHY4VXRpbGl0eUNvbnRleHQt
Pkdsb2JhbCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJmcmFtZVNvdXJjZUxpbmUiKSkpOwotICAg
IGlmIChmcmFtZVNvdXJjZUxpbmUuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gdjg6OkRlYnVnOjpDYWxsKGZyYW1lU291
cmNlTGluZSk7Ci0gICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJlc3VsdCA9IHZhbHVlLT5JbnQzMlZhbHVlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgVjhQcm94eTo6c291cmNlTmFtZShTdHJpbmcmIHJlc3VsdCkKLXsKLSAgICB2ODo6
SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhVdGlsaXR5
Q29udGV4dCA9IHV0aWxpdHlDb250ZXh0KCk7Ci0gICAgaWYgKHY4VXRpbGl0eUNvbnRleHQuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNv
bnRleHRTY29wZSh2OFV0aWxpdHlDb250ZXh0KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
bj4gZnJhbWVTb3VyY2VOYW1lOwotICAgIGZyYW1lU291cmNlTmFtZSA9IHY4OjpMb2NhbDx2ODo6
RnVuY3Rpb24+OjpDYXN0KHY4VXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpLT5HZXQodjg6OlN0cmlu
Zzo6TmV3KCJmcmFtZVNvdXJjZU5hbWUiKSkpOwotICAgIGlmIChmcmFtZVNvdXJjZU5hbWUuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlID0gdjg6OkRlYnVnOjpDYWxsKGZyYW1lU291cmNlTmFtZSk7Ci0gICAgaWYgKHZhbHVl
LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9IHRvV2ViQ29y
ZVN0cmluZyh2YWx1ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgVjhQcm94eTo6cmVn
aXN0ZXJFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9uKQogewogICAgIC8v
IElmIHRoZSBleHRlbnNpb24gZXhpc3RzIGluIG91ciBsaXN0LCBpdCB3YXMgYWxyZWFkeSByZWdp
c3RlcmVkIHdpdGggVjguCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkocmV2aXNpb24gNTcxNTYp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjk2
LDE2ICsyOTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFByb2Nlc3MgYW55
IHBlbmRpbmcgSmF2YVNjcmlwdCBjb25zb2xlIG1lc3NhZ2VzLgogICAgICAgICBzdGF0aWMgdm9p
ZCBwcm9jZXNzQ29uc29sZU1lc3NhZ2VzKCk7CiAKLSAgICAgICAgLy8gRnVuY3Rpb24gZm9yIHJl
dHJpZXZpbmcgdGhlIGxpbmUgbnVtYmVyIGFuZCBzb3VyY2UgbmFtZSBmb3IgdGhlIHRvcAotICAg
ICAgICAvLyBKYXZhU2NyaXB0IHN0YWNrIGZyYW1lLgotICAgICAgICAvLwotICAgICAgICAvLyBJ
dCB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBsaW5lIG51bWJlciB3YXMgc3VjY2Vzc2Z1bGx5IHJl
dHJpZXZlZCBhbmQgd3JpdHRlbgotICAgICAgICAvLyBpbnRvIHRoZSB8cmVzdWx0fCBwYXJhbWV0
ZXIsIG90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UuIEl0IG1heQotICAg
ICAgICAvLyBmYWlsIGR1ZSB0byBhIHN0Y2sgb3ZlcmZsb3cgaW4gdGhlIHVuZGVybHlpbmcgSmF2
YVNjcmlwdCBpbXBsZW50YXRpb24sIGhhbmRsaW5nCi0gICAgICAgIC8vIG9mIHN1Y2ggZXhjZXB0
aW9uIGlzIHVwIHRvIHRoZSBjYWxsZXIuCi0gICAgICAgIHN0YXRpYyBib29sIHNvdXJjZUxpbmVO
dW1iZXIoaW50JiByZXN1bHQpOwotICAgICAgICBzdGF0aWMgYm9vbCBzb3VyY2VOYW1lKFN0cmlu
ZyYgcmVzdWx0KTsKLQogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQoKTsK
ICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtYWluV29ybGRDb250ZXh0KCk7CiAKQEAg
LTM1NiwyMyArMzQ2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHN2Z0V4Y2VwdGlvbk5hbWUoaW50IGV4Y2VwdGlvbkNvZGUpOwogI2VuZGlmCiAK
LSAgICAgICAgc3RhdGljIHZvaWQgY3JlYXRlVXRpbGl0eUNvbnRleHQoKTsKLQotICAgICAgICAv
LyBSZXR1cm5zIGEgbG9jYWwgaGFuZGxlIG9mIHRoZSB1dGlsaXR5IGNvbnRleHQuCi0gICAgICAg
IHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHV0aWxpdHlDb250ZXh0KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKG1fdXRpbGl0eUNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgIGNyZWF0ZVV0aWxpdHlDb250ZXh0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fdXRpbGl0eUNvbnRleHQpOwotICAgICAgICB9Ci0KICAg
ICAgICAgRnJhbWUqIG1fZnJhbWU7CiAKICAgICAgICAgLy8gRm9yIHRoZSBtb21lbnQsIHdlIGhh
dmUgb25lIG9mIHRoZXNlLiAgU29vbiB3ZSB3aWxsIGhhdmUgb25lIHBlciBET01XcmFwcGVyV29y
bGQuCiAgICAgICAgIFJlZlB0cjxWOERPTVdpbmRvd1NoZWxsPiBtX3dpbmRvd1NoZWxsOwotICAg
ICAgICAKLSAgICAgICAgLy8gVXRpbGl0eSBjb250ZXh0IGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5j
dGlvbnMgdXNlZCBpbnRlcm5hbGx5LgotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkNvbnRleHQ+IG1fdXRpbGl0eUNvbnRleHQ7CiAKICAgICAgICAgaW50IG1faGFuZGxlckxpbmVO
dW1iZXI7CiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmNwcAkocmV2aXNpb24gNTcxNTYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSwxMSBAQCBTY3JpcHRPYmpl
Y3QgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhCiAKICAgICBTdHJpbmcgc291cmNlTmFtZTsK
ICAgICBpbnQgc291cmNlTGluZU51bWJlcjsKLSAgICBpZiAoU2NyaXB0Q2FsbFN0YWNrOjpjYWxs
TG9jYXRpb24oJnNvdXJjZU5hbWUsICZzb3VyY2VMaW5lTnVtYmVyKSAmJiBzb3VyY2VOYW1lICE9
ICJ1bmRlZmluZWQiKSB7CisgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICBpZiAoU2NyaXB0
Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24oJnNvdXJjZU5hbWUsICZzb3VyY2VMaW5lTnVtYmVyLCAm
ZnVuY3Rpb25OYW1lKSAmJiBzb3VyY2VOYW1lICE9ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgIHJl
Y29yZC5zZXQoImNhbGxlclNjcmlwdE5hbWUiLCBzb3VyY2VOYW1lKTsKICAgICAgICAgcmVjb3Jk
LnNldCgiY2FsbGVyU2NyaXB0TGluZSIsIHNvdXJjZUxpbmVOdW1iZXIpOworICAgICAgICByZWNv
cmQuc2V0KCJjYWxsZXJGdW5jdGlvbk5hbWUiLCBmdW5jdGlvbk5hbWUpOwogICAgIH0KICAgICBy
ZXR1cm4gcmVjb3JkOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTcyMjMpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0wNyAg
SmFpbWUgWWFwICA8amFpbWV5YXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgVGVzdHMgZXhwZWN0YXRpb25zIGNoYW5nZWQgZHVlIHRv
IHRoZSBhZGRpdGlvbiBvZiB0aGUgZnVuY3Rpb24gc3ltYm9sIG5hbWUgZm9yCisgICAgICAgIHRo
ZSBjYWxsIGxvY2F0aW9uIGZvciByZWNvcmRzIHNlbnQgYnkgdGhlIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjgzOQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci90aW1l
bGluZS10ZXN0LmpzOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9pbnNwZWN0b3Iv
dGltZWxpbmUtZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtLXdpbi9pbnNwZWN0b3IvdGltZWxpbmUtbWFyay10aW1lbGluZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2luc3BlY3Rvci90aW1lbGluZS1u
ZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS13aW4vaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS13aW4vaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0
ZWQudHh0OgorCiAyMDEwLTA0LTA3ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lLXRlc3QuanMJKHJldmlzaW9uIDU3MTU2KQorKysgTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTEwLDYgKzEwLDcgQEAg
dmFyIHRpbWVsaW5lTm9uRGV0ZXJtaW5pc3RpY1Byb3BzID0geyAKICAgICB3aWR0aCA6IDEsCiAg
ICAgY2FsbGVyU2NyaXB0TmFtZTogMSwKICAgICBjYWxsZXJTY3JpcHRMaW5lOiAxLAorICAgIGNh
bGxlckZ1bmN0aW9uTmFtZTogMSwKICAgICB1cmwgOiAxLAogICAgIHVzZWRIZWFwU2l6ZTogMSwK
ICAgICB0b3RhbEhlYXBTaXplOiAxLApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2luc3BlY3Rvci90aW1lbGluZS1ldmVudC1kaXNwYXRjaC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2luc3BlY3Rvci90
aW1lbGluZS1ldmVudC1kaXNwYXRjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDU3MTU2KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2luc3BlY3Rvci90aW1lbGluZS1ldmVu
dC1kaXNwYXRjaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3IEBAIEV2
ZW50RGlzcGF0Y2ggUHJvcGVydGllczoKICsgc3RhcnRUaW1lIDogKiBERUZJTkVEICoKICsgY2Fs
bGVyU2NyaXB0TmFtZSA6ICogREVGSU5FRCAqCiArIGNhbGxlclNjcmlwdExpbmUgOiAqIERFRklO
RUQgKgorKyBjYWxsZXJGdW5jdGlvbk5hbWUgOiAqIERFRklORUQgKgogKyBkYXRhIDogewogKy0g
dHlwZSA6IG1vdXNlZG93bgogKyB9CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS13aW4vaW5zcGVjdG9yL3RpbWVsaW5lLW1hcmstdGltZWxpbmUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9pbnNwZWN0b3IvdGlt
ZWxpbmUtbWFyay10aW1lbGluZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDU3MTU2KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2luc3BlY3Rvci90aW1lbGluZS1tYXJrLXRp
bWVsaW5lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAgTWFya1Rp
bWVsaW5lIFByb3BlcnRpZXM6CiArIHN0YXJ0VGltZSA6ICogREVGSU5FRCAqCiArIGNhbGxlclNj
cmlwdE5hbWUgOiAqIERFRklORUQgKgogKyBjYWxsZXJTY3JpcHRMaW5lIDogKiBERUZJTkVEICoK
KysgY2FsbGVyRnVuY3Rpb25OYW1lIDogKiBERUZJTkVEICoKICsgZGF0YSA6IHsKICstIG1lc3Nh
Z2UgOiBNQVJLIFRJTUVMSU5FCiArIH0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLXdpbi9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2luc3BlY3Rv
ci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTcxNTYp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vaW5zcGVjdG9yL3RpbWVsaW5l
LW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUs
NyBAQCBSZXNvdXJjZVNlbmRSZXF1ZXN0IFByb3BlcnRpZXM6CiArIHN0YXJ0VGltZSA6ICogREVG
SU5FRCAqCiArIGNhbGxlclNjcmlwdE5hbWUgOiAqIERFRklORUQgKgogKyBjYWxsZXJTY3JpcHRM
aW5lIDogKiBERUZJTkVEICoKKysgY2FsbGVyRnVuY3Rpb25OYW1lIDogKiBERUZJTkVEICoKICsg
ZGF0YSA6IHsKICstIGlkZW50aWZpZXIgOiAqIERFRklORUQgKgogKy0gdXJsIDogKiBERUZJTkVE
ICoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9pbnNwZWN0b3IvdGlt
ZWxpbmUtcGFpbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLXdpbi9pbnNwZWN0b3IvdGltZWxpbmUtcGFpbnQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA1NzE1NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9pbnNw
ZWN0b3IvdGltZWxpbmUtcGFpbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDYg
KzQsNyBAQCBQYWludCBQcm9wZXJ0aWVzOgogKyBzdGFydFRpbWUgOiAqIERFRklORUQgKgogKyBj
YWxsZXJTY3JpcHROYW1lIDogKiBERUZJTkVEICoKICsgY2FsbGVyU2NyaXB0TGluZSA6ICogREVG
SU5FRCAqCisrIGNhbGxlckZ1bmN0aW9uTmFtZSA6ICogREVGSU5FRCAqCiArIGRhdGEgOiB7CiAr
LSB4IDogMAogKy0geSA6IDAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdp
bi9pbnNwZWN0b3IvdGltZWxpbmUtcGFyc2UtaHRtbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2luc3BlY3Rvci90aW1lbGluZS1w
YXJzZS1odG1sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTcxNTYpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQCBQYXJzZUhUTUwgUHJvcGVydGll
czoKICsgc3RhcnRUaW1lIDogKiBERUZJTkVEICoKICsgY2FsbGVyU2NyaXB0TmFtZSA6ICogREVG
SU5FRCAqCiArIGNhbGxlclNjcmlwdExpbmUgOiAqIERFRklORUQgKgorKyBjYWxsZXJGdW5jdGlv
bk5hbWUgOiAqIERFRklORUQgKgogKyBkYXRhIDogewogKy0gbGVuZ3RoIDogOQogKy0gc3RhcnRM
aW5lIDogMAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>