<?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>78390</bug_id>
          
          <creation_ts>2012-02-10 14:24:16 -0800</creation_ts>
          <short_desc>Web Inspector: Switch Debugger agent to TypeBuilder</short_desc>
          <delta_ts>2012-02-21 04:04:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554389</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-10 14:24:16 -0800</bug_when>
    <thetext>TypeBuilder provides type-safe API for output messages.
Switch one agent of domain &quot;Debugger&quot; to the new API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554409</commentid>
    <comment_count>1</comment_count>
      <attachid>126587</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-10 14:54:01 -0800</bug_when>
    <thetext>Created attachment 126587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554411</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-10 14:56:18 -0800</bug_when>
    <thetext>Attachment 126587 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InjectedScript.cpp:79:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.cpp:93:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:80:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:82:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 6 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>554598</commentid>
    <comment_count>3</comment_count>
      <attachid>126587</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-11 01:41:21 -0800</bug_when>
    <thetext>Comment on attachment 126587
Patch

I suggest adding &quot;using&quot; statements to implementation (e.g. like in InspectorIndexedDBAgent.cpp) to avoid flooding the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556552</commentid>
    <comment_count>4</comment_count>
      <attachid>127029</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-14 13:24:18 -0800</bug_when>
    <thetext>Created attachment 127029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556578</commentid>
    <comment_count>5</comment_count>
      <attachid>127029</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-14 14:03:30 -0800</bug_when>
    <thetext>Comment on attachment 127029
Patch

Attachment 127029 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11518411</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556579</commentid>
    <comment_count>6</comment_count>
      <attachid>127029</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-14 14:05:41 -0800</bug_when>
    <thetext>Comment on attachment 127029
Patch

Attachment 127029 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11521386</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556601</commentid>
    <comment_count>7</comment_count>
      <attachid>127029</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-14 14:28:42 -0800</bug_when>
    <thetext>Comment on attachment 127029
Patch

Attachment 127029 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11523375</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556603</commentid>
    <comment_count>8</comment_count>
      <attachid>127048</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-14 14:30:56 -0800</bug_when>
    <thetext>Created attachment 127048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556656</commentid>
    <comment_count>9</comment_count>
      <attachid>127048</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-14 15:09:01 -0800</bug_when>
    <thetext>Comment on attachment 127048
Patch

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

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324
&gt; +    using WebCore::TypeBuilder::Debugger::Location;

Why isn&apos;t this statement at the beginning of the file?
This seems to be forbidden by style guide and you need to use a long name for return value type because of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556707</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-14 15:41:31 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 127048 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127048&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324
&gt; &gt; +    using WebCore::TypeBuilder::Debugger::Location;
&gt; 
&gt; Why isn&apos;t this statement at the beginning of the file?
&gt; This seems to be forbidden by style guide and you need to use a long name for return value type because of that.

Are you sure it IS forbidden?

Anyway Location clashes with WebCore::Location and it&apos;s why the previous patch didn&apos;t compile. I think this form might be optimal. Return value is OK, we have to do it in .h anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557071</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 02:11:10 -0800</bug_when>
    <thetext>Attachment 127029 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InjectedScript.cpp:85:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.cpp:99:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:80:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:82:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 6 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>557075</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 02:26:57 -0800</bug_when>
    <thetext>Attachment 127048 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InjectedScript.cpp:85:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.cpp:99:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:80:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:82:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 6 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>557234</commentid>
    <comment_count>13</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-15 06:50:34 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 127048 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127048&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324
&gt; &gt; &gt; +    using WebCore::TypeBuilder::Debugger::Location;
&gt; &gt; 
&gt; &gt; Why isn&apos;t this statement at the beginning of the file?
&gt; &gt; This seems to be forbidden by style guide and you need to use a long name for return value type because of that.
&gt; 
&gt; Are you sure it IS forbidden?
&gt; 
&gt; Anyway Location clashes with WebCore::Location and it&apos;s why the previous patch didn&apos;t compile. I think this form might be optimal. Return value is OK, we have to do it in .h anyway.

5. In implementation files, put all other &quot;using&quot; statements at the beginning of the file, before any namespace definitions and after any &quot;include&quot; statements.

This sounds like it IS forbidden to me.
I am fine with using fully qualified name for Location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557488</commentid>
    <comment_count>14</comment_count>
      <attachid>127222</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-15 13:08:07 -0800</bug_when>
    <thetext>Created attachment 127222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557495</commentid>
    <comment_count>15</comment_count>
      <attachid>127222</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-15 13:17:59 -0800</bug_when>
    <thetext>Comment on attachment 127222
Patch

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

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.h:133
&gt; +    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Debugger::CallFrame &gt; &gt; currentCallFrames();

Extra space after CallFrame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557530</commentid>
    <comment_count>16</comment_count>
      <attachid>127231</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-15 14:01:21 -0800</bug_when>
    <thetext>Created attachment 127231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557937</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 23:24:37 -0800</bug_when>
    <thetext>Attachment 127222 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InjectedScript.cpp:85:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.cpp:99:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:80:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:82:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 6 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>557944</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 23:35:13 -0800</bug_when>
    <thetext>Attachment 127231 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: dataTransfer.types (HTML5 drag &amp; drop) should return DOMStringList
Using index info to reconstruct a base tree...
&lt;stdin&gt;:84: trailing whitespace.
        
&lt;stdin&gt;:333: trailing whitespace.
&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;
&lt;stdin&gt;:334: trailing whitespace.
 width=&quot;300&quot; height=&quot;300&quot; onload=&quot;runRepaintTest()&quot;&gt;
&lt;stdin&gt;:335: trailing whitespace.
&lt;script xlink:href=&quot;../../fast/repaint/resources/repaint.js&quot; /&gt;
&lt;stdin&gt;:336: trailing whitespace.
&lt;script&gt;&lt;![CDATA[
warning: squelched 16 whitespace errors
warning: 21 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 dataTransfer.types (HTML5 drag &amp; drop) should return DOMStringList

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559212</commentid>
    <comment_count>19</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-17 08:25:35 -0800</bug_when>
    <thetext>Committed r108077: &lt;http://trac.webkit.org/changeset/108077&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559224</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-17 08:46:03 -0800</bug_when>
    <thetext>This broke the build, and no-one is around on #webkit to deal with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559231</commentid>
    <comment_count>21</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-17 08:55:27 -0800</bug_when>
    <thetext>Reverted r108077 for reason:

it broke compilation.

Committed r108083: &lt;http://trac.webkit.org/changeset/108083&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559432</commentid>
    <comment_count>22</comment_count>
      <attachid>127630</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-17 12:41:56 -0800</bug_when>
    <thetext>Created attachment 127630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560799</commentid>
    <comment_count>23</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-21 04:04:44 -0800</bug_when>
    <thetext>Committed r108337: &lt;http://trac.webkit.org/changeset/108337&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126587</attachid>
            <date>2012-02-10 14:54:01 -0800</date>
            <delta_ts>2012-02-14 13:24:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78390-20120211025359.patch</filename>
            <type>text/plain</type>
            <size>14524</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzAyMDhmMjQzODI1OWYy
ZDM0MGJjNDliOTAyZTU0OTIzODM2MDUwNS4uMjYwNTA4Njc1MWVkMmJjODcxNTUwNjk4NmI4YjFl
OTA2NDgzZjY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDEyLTAyLTEwICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTd2l0Y2ggRGVidWdnZXIgYWdlbnQgdG8gVHlwZUJ1aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50IGNvZGUgaXMgc3dpdGNoZWQgdG8g
VHlwZUJ1aWxkZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRQYXJzZVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorCisyMDEyLTAyLTEwICBQ
ZXRlciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBwcm9wZXJseSByZXNvbHZlIG91dHB1dCB0
eXBlcyBvZiBjb21tYW5kcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzgwMjUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
ZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5weQppbmRleCAwYzc0ZmZhY2ZlOWYyZTU3Y2IxMjU2ZmFjMjg4NmUx
MzFkMGMzMWU0Li4xZDhkNDM5NWQ0ZTcyOThhZGY2OTlkZWNkMzZjODNhMzdhMjQ3ZGJkIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eQpAQCAtNTYsNyArNTYsOCBAQCBUWVBFX05BTUVfRklYX01BUCA9IHsKIH0KIAogCi1UWVBFU19X
SVRIX1JVTlRJTUVfQ0FTVF9TRVQgPSBmcm96ZW5zZXQoW10pCitUWVBFU19XSVRIX1JVTlRJTUVf
Q0FTVF9TRVQgPSBmcm96ZW5zZXQoWyJSdW50aW1lLlJlbW90ZU9iamVjdCIsICJSdW50aW1lLlBy
b3BlcnR5RGVzY3JpcHRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJEZWJ1Z2dlci5GdW5jdGlvbkRldGFpbHMiLCAiRGVidWdnZXIuQ2FsbEZyYW1lIl0pCiAK
IAogY21kbGluZV9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggNmQwOWIyOTE3Yjg4NTQzMTY5
MjIyOTBiZjRhNDNhZjZmYTY1YWQ3Ny4uZTVkM2I1YjNiNjk4YmZlZmU1YTNiYzdlYTQyZTBmMTc0
N2FlYjI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3Bw
CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplCiAgICAgbWFrZUV2YWxD
YWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOwogfQogCi12b2lk
IEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCwgYm9vbCogd2FzVGhyb3duKQordm9pZCBJbmplY3Rl
ZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBib29sKiB3YXNUaHJvd24pCiB7
CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qs
ICJldmFsdWF0ZU9uQ2FsbEZyYW1lIik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2Fs
bEZyYW1lcyk7CkBAIC04NSwxMCArODUsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVh
dGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChyZXR1cm5CeVZhbHVlKTsKLSAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1
bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0UmF3OworICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sICZyZXN1
bHRSYXcsIHdhc1Rocm93bik7CisgICAgKnJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJlc3VsdFJhdyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0RnVuY3Rpb25EZXRhaWxzIik7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7CkBAIC05OSw3ICsxMDEs
NyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
SW50ZXJuYWwgZXJyb3IiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgICpyZXN1bHQgPSBy
ZXN1bHRWYWx1ZS0+YXNPYmplY3QoKTsKKyAgICAqcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpGdW5jdGlvbkRldGFpbHM6OnJ1bnRpbWVDYXN0KHJlc3VsdFZhbHVlKTsKIH0KIAogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiogcHJvcGVydGllcykKQEAgLTExNCw3ICsxMTYsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBvYmplYwogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgICpwcm9wZXJ0aWVzID0gcmVzdWx0LT5hc0FycmF5KCk7
CisgICAgKnByb3BlcnRpZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlByb3BlcnR5RGVzY3JpcHRvcj46OnJ1bnRpbWVDYXN0KHJlc3VsdCk7CiB9CiAKIE5vZGUq
IEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkK
QEAgLTE0MSw3ICsxNDMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQpCiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZy
YW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+IEluamVjdGVkU2Ny
aXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAg
ICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJ3cmFwQ2FsbEZyYW1lcyIpOwpAQCAtMTQ5LDggKzE1
MSw4IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2Fs
bEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsCiAgICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1l
c1ZhbHVlID0gZnVuY3Rpb24uY2FsbCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVz
dWx0ID0gY2FsbEZyYW1lc1ZhbHVlLnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9i
amVjdC5zY3JpcHRTdGF0ZSgpKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9y
VmFsdWU6OlR5cGVBcnJheSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+YXNBcnJheSgpOwotICAg
IHJldHVybiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpydW50aW1lQ2Fz
dChyZXN1bHQpOworICAgIHJldHVybiBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGYyYjdhYzE1MmIzOGE0ZTg5NzQ2YTcw
YmYzMTUzNWY0MTNmYjg2MTQuLjg3ZmNmZDg4Y2Q3Yjk4ZmI4YjU5YmEyNWMxZTU4NWYxZTE2N2M5
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0zMiw2
ICszMiw3IEBACiAjZGVmaW5lIEluamVjdGVkU2NyaXB0X2gKIAogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiAjaW5j
bHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc2LDE1ICs3NywxNSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5VmFsdWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiB3YXNU
aHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKKyAg
ICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiog
cmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4q
IHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IHdyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4g
d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsKICNlbmRpZgogCiAgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2NyaXB0VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgZ3JvdXBOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3NDJkMjg4ZGY5YzgzOWI3Y2YxZWNiMGY5NjQ4ODIz
ZDUwNDI4MTc2Li4xMmM1MTBiZjhjYTEyOTQ0NWQzODE2N2VkNDhkZmFhODUyYTYwMDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0yMTAsOCArMjEwLDEwIEBAIHN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpc1JlZ2V4KQogICAgIHJldHVybiB1
cmwgPT0gcGF0dGVybjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVh
a3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25h
bFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIG91dEJyZWFrcG9pbnRJZCwg
UmVmUHRyPEluc3BlY3RvckFycmF5PiYgbG9jYXRpb25zKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5n
KiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIG91
dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbG9jYXRpb25zUmF3KQogewor
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4gPiBsb2NhdGlvbnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOworICAgIGxvY2F0aW9uc1JhdyA9IGxvY2F0aW9uczsK
ICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgICpl
cnJvclN0cmluZyA9ICJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkLiI7
CiAgICAgICAgIHJldHVybjsKQEAgLTMxMCw3ICszMTIsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0CiAgICAgcmVzdW1lKGVycm9yU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0
cmluZyYgYnJlYWtwb2ludElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHRC
cmVha3BvaW50JiBicmVha3BvaW50KQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIGJyZWFrcG9pbnRJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2Ny
aXB0QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKIHsKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBz
Y3JpcHRJdGVyYXRvciA9IG1fc2NyaXB0cy5maW5kKHNjcmlwdElkKTsKICAgICBpZiAoc2NyaXB0
SXRlcmF0b3IgPT0gbV9zY3JpcHRzLmVuZCgpKQpAQCAtMzgwLDE0ICszODIsMTYgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIg
KyBzY3JpcHRJZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlv
bkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9u
SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBkZXRhaWxzKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBkZXRhaWxz
UmF3KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CiAgICAg
aWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+IGRldGFpbHM7
CiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0RnVuY3Rpb25EZXRhaWxzKGVycm9yU3RyaW5nLCBmdW5j
dGlvbklkLCAmZGV0YWlscyk7CisgICAgZGV0YWlsc1JhdyA9IGRldGFpbHM7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChjb25z
dCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSkK
QEAgLTQ3MCwyNCArNDc0LDI2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1
c2VPbkV4Y2VwdGlvbnNJbXBsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywKICAgICAgICAgbV9z
dGF0ZS0+c2V0TG9uZyhEZWJ1Z2dlckFnZW50U3RhdGU6OnBhdXNlT25FeGNlcHRpb25zU3RhdGUs
IHBhdXNlU3RhdGUpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxG
cmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2Jq
ZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3Qg
Ym9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3Vs
dCwgYm9vbCogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0
ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxs
RnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9i
amVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0
IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1
bHRSYXcsIGJvb2wqIHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElk
KGNhbGxGcmFtZUlkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAg
ICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiByZXN1bHQ7CiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShl
cnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwg
b2JqZWN0R3JvdXAgPyAqb2JqZWN0R3JvdXAgOiAiIiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJID8g
KmluY2x1ZGVDb21tYW5kTGluZUFQSSA6IGZhbHNlLCByZXR1cm5CeVZhbHVlID8gKnJldHVybkJ5
VmFsdWUgOiBmYWxzZSwgJnJlc3VsdCwgd2FzVGhyb3duKTsKKyAgICByZXN1bHRSYXcgPSByZXN1
bHQ7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmN1cnJlbnRDYWxsRnJhbWVzKCkKIHsKICAgICBpZiAoIW1fcGF1c2VkU2NyaXB0U3RhdGUpCi0g
ICAgICAgIHJldHVybiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVh
dGUoKTsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBp
ZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZy
YW1lPjo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwQ2Fs
bEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQpAQCAtNTQwLDcgKzU0Niw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzY3Jp
cHRJZCwgY29uc3QgU2NyaXB0CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldE51bWJlcigi
bGluZU51bWJlciIsICZicmVha3BvaW50LmxpbmVOdW1iZXIpOwogICAgICAgICBicmVha3BvaW50
T2JqZWN0LT5nZXROdW1iZXIoImNvbHVtbk51bWJlciIsICZicmVha3BvaW50LmNvbHVtbk51bWJl
cik7CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygiY29uZGl0aW9uIiwgJmJy
ZWFrcG9pbnQuY29uZGl0aW9uKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9j
YXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+Zmlyc3QsIHNjcmlwdElkLCBicmVha3BvaW50
KTsKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0
aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQtPmZpcnN0LCBzY3JpcHRJZCwgYnJlYWtwb2ludCk7
CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPmJyZWFrcG9p
bnRSZXNvbHZlZChpdC0+Zmlyc3QsIGxvY2F0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCBiNjRmZWRjODk2
MGNmODZmNDVlZTRiMWQ5ZmRhMTRmYjViZTQzYWFjLi45NWE4ZjMwZGFlZDlmODI4YzkxODMwZjEz
MThjOTRkMThiNzBhOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlzYWJsZSgpOwogICAgIGJvb2wgZW5hYmxlZCgpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gY3VycmVudENhbGxGcmFtZXMoKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZSA+ID4gY3VycmVudENh
bGxGcmFtZXMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJp
bmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9Q
YXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmly
c3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CkBAIC0x
MzksNyArMTM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNJ
bXBsKEVycm9yU3RyaW5nKiwgaW50KTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHRJZCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOworICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3Qg
U3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFNjcmlw
dEJyZWFrcG9pbnQmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgYm9vbCBhc3NlcnRQYXVzZWQo
RXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGNsZWFyQnJlYWtEZXRhaWxzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127029</attachid>
            <date>2012-02-14 13:24:18 -0800</date>
            <delta_ts>2012-02-14 14:30:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78390-20120215012415.patch</filename>
            <type>text/plain</type>
            <size>15299</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1OTk1ZGE2MjQ4YjE0
ZGNhNGUwOTU2ODk1MWQzNzdjN2M1MTc2MC4uMDJjZTVkYWMxNjFhNzkzYzc2Mjk4ZGIwMjAyZWJk
N2M1YTcxNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTEwICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTd2l0Y2ggRGVidWdnZXIgYWdlbnQgdG8gVHlwZUJ1aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50IGNvZGUgaXMgc3dpdGNoZWQgdG8g
VHlwZUJ1aWxkZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRQYXJzZVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTAyLTEyICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQWRkIEFQ
SSB0byBlbmFibGUgaW52ZXJ0ZWQgY29sb3IgZHJhd2luZyBvbiBhIFdlYlZpZXcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXgg
MGM3NGZmYWNmZTlmMmU1N2NiMTI1NmZhYzI4ODZlMTMxZDBjMzFlNC4uMWQ4ZDQzOTVkNGU3Mjk4
YWRmNjk5ZGVjZDM2YzgzYTM3YTI0N2RiZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTU2LDcgKzU2LDggQEAgVFlQRV9O
QU1FX0ZJWF9NQVAgPSB7CiB9CiAKIAotVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJv
emVuc2V0KFtdKQorVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJvemVuc2V0KFsiUnVu
dGltZS5SZW1vdGVPYmplY3QiLCAiUnVudGltZS5Qcm9wZXJ0eURlc2NyaXB0b3IiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVidWdnZXIuRnVuY3Rpb25EZXRh
aWxzIiwgIkRlYnVnZ2VyLkNhbGxGcmFtZSJdKQogCiAKIGNtZGxpbmVfcGFyc2VyID0gb3B0cGFy
c2UuT3B0aW9uUGFyc2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCmluZGV4IDZkMDliMjkxN2I4ODU0MzE2OTIyMjkwYmY0YTQzYWY2ZmE2NWFkNzcuLmJh
ZTdkZTYxYzQ5N2EzNDFhNDNkOGNjOTM5M2Q1NDM0Y2UwMjcyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtNDMsNiArNDMsMTIgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgog
Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBXZWJDb3JlOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZTsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0
ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKQEAgLTc2LDcgKzgyLDcgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1
bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZy
YW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
Ym9vbCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29s
KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgUmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwgYm9vbCogd2FzVGhyb3du
KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGNhbGxGcmFtZXMpOwpAQCAtODUsMTAgKzkxLDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRW
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGluZUFQSSk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQocmV0dXJuQnlWYWx1ZSk7Ci0gICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5n
LCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3VsdFJhdzsKKyAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCAm
cmVzdWx0UmF3LCB3YXNUaHJvd24pOworICAgICpyZXN1bHQgPSBSZW1vdGVPYmplY3Q6OnJ1bnRp
bWVDYXN0KHJlc3VsdFJhdyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9u
RGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25J
ZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKIHsKICAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldEZ1
bmN0aW9uRGV0YWlscyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQp
OwpAQCAtOTksNyArMTA3LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgICAgICAgICAg
KmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7CisgICAgKnJlc3VsdCA9IEZ1
bmN0aW9uRGV0YWlsczo6cnVudGltZUNhc3QocmVzdWx0VmFsdWUpOwogfQogCiB2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBwcm9wZXJ0aWVzKQpAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjCiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgKnByb3BlcnRpZXMgPSByZXN1bHQtPmFzQXJyYXkoKTsKKyAgICAq
cHJvcGVydGllcyA9IEFycmF5PFByb3BlcnR5RGVzY3JpcHRvcj46OnJ1bnRpbWVDYXN0KHJlc3Vs
dCk7CiB9CiAKIE5vZGUqIEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCkKQEAgLTE0MSw3ICsxNDksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpy
ZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB9CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVkU2Ny
aXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKK1Bhc3NS
ZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUo
KSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsICJ3cmFwQ2FsbEZyYW1lcyIpOwpAQCAtMTQ5LDggKzE1Nyw4IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRW
YWx1ZSYgY2FsCiAgICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gZnVuY3Rpb24uY2Fs
bCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gY2FsbEZyYW1lc1ZhbHVl
LnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsK
ICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+YXNBcnJheSgpOwotICAgIHJldHVybiBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpydW50aW1lQ2Fz
dChyZXN1bHQpOworICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGYy
YjdhYzE1MmIzOGE0ZTg5NzQ2YTcwYmYzMTUzNWY0MTNmYjg2MTQuLjg3ZmNmZDg4Y2Q3Yjk4ZmI4
YjU5YmEyNWMxZTU4NWYxZTE2N2M5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEluamVjdGVkU2NyaXB0X2gK
IAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
clR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc2LDE1ICs3Nywx
NSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5
VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sKiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElk
KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBT
dHJpbmcmIG9iamVjdElkKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHdyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZh
bHVlJik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+ID4gd3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsK
ICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2Ny
aXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3NDJkMjg4ZGY5
YzgzOWI3Y2YxZWNiMGY5NjQ4ODIzZDUwNDI4MTc2Li43MjdkN2EwMGIwMTlhZThkMjcwNTA1MTU2
YTg5ZTAyNmM3NTgzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC00NCw2ICs0NCwxMiBAQAogI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uOwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0OwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxs
RnJhbWU7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERlYnVnZ2VyQWdlbnRT
dGF0ZSB7CkBAIC0yMTAsOCArMjE2LDEwIEBAIHN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpc1JlZ2V4KQogICAgIHJldHVy
biB1cmwgPT0gcGF0dGVybjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRC
cmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRp
b25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIG91dEJyZWFrcG9pbnRJ
ZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbG9jYXRpb25zKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3Ry
aW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29s
dW1uTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcq
IG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbG9jYXRpb25zUmF3KQog
eworICAgIFJlZlB0cjxBcnJheTxMb2NhdGlvbj4gPiBsb2NhdGlvbnMgPSBBcnJheTxMb2NhdGlv
bj46OmNyZWF0ZSgpOworICAgIGxvY2F0aW9uc1JhdyA9IGxvY2F0aW9uczsKICAgICBpZiAoIW9w
dGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9
ICJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkLiI7CiAgICAgICAgIHJl
dHVybjsKQEAgLTMxMCw3ICszMTgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNv
bnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgcmVz
dW1lKGVycm9yU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtw
b2ludElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBi
cmVha3BvaW50KQorUGFzc1JlZlB0cjxMb2NhdGlvbj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SWQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7CiAgICAg
U2NyaXB0c01hcDo6aXRlcmF0b3Igc2NyaXB0SXRlcmF0b3IgPSBtX3NjcmlwdHMuZmluZChzY3Jp
cHRJZCk7CiAgICAgaWYgKHNjcmlwdEl0ZXJhdG9yID09IG1fc2NyaXB0cy5lbmQoKSkKQEAgLTMz
MCw3ICszMzgsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaQogICAgICAgICBkZWJ1Z1NlcnZl
ckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFr
cG9pbnRJZHMuc2V0KGJyZWFrcG9pbnRJZCwgVmVjdG9yPFN0cmluZz4oKSkuZmlyc3Q7CiAgICAg
ZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3ItPnNlY29uZC5hcHBlbmQoZGVidWdTZXJ2
ZXJCcmVha3BvaW50SWQpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+IGxvY2F0aW9uID0gVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRl
KCkKKyAgICBSZWZQdHI8TG9jYXRpb24+IGxvY2F0aW9uID0gTG9jYXRpb246OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRTY3JpcHRJZChzY3JpcHRJZCkKICAgICAgICAgLnNldExpbmVOdW1iZXIoYWN0
dWFsTGluZU51bWJlcik7CiAgICAgbG9jYXRpb24tPnNldENvbHVtbk51bWJlcihhY3R1YWxDb2x1
bW5OdW1iZXIpOwpAQCAtMzgwLDE0ICszODgsMTYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMK
ICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBkZXRhaWxzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5j
dGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBkZXRhaWxzUmF3KQogewogICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVj
dGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0
Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1l
IGhhcyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBSZWZQdHI8RnVuY3Rpb25E
ZXRhaWxzPiBkZXRhaWxzOwogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWlscyhl
cnJvclN0cmluZywgZnVuY3Rpb25JZCwgJmRldGFpbHMpOworICAgIGRldGFpbHNSYXcgPSBkZXRh
aWxzOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5l
eHRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGRhdGEpCkBAIC00NzAsMjQgKzQ4MCwyNiBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zSW1wbChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsCiAgICAgICAgIG1fc3RhdGUtPnNldExvbmcoRGVidWdnZXJBZ2VudFN0YXRlOjpwYXVzZU9u
RXhjZXB0aW9uc1N0YXRlLCBwYXVzZVN0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiByZXN1bHQsIGJvb2wqIHdhc1Rocm93bikKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgcmVzdWx0UmF3LCBib29sKiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRT
Y3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1lIGhh
cyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBSZWZQdHI8UmVtb3RlT2JqZWN0
PiByZXN1bHQ7CiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJvclN0
cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0
R3JvdXAgPyAqb2JqZWN0R3JvdXAgOiAiIiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJID8gKmluY2x1
ZGVDb21tYW5kTGluZUFQSSA6IGZhbHNlLCByZXR1cm5CeVZhbHVlID8gKnJldHVybkJ5VmFsdWUg
OiBmYWxzZSwgJnJlc3VsdCwgd2FzVGhyb3duKTsKKyAgICByZXN1bHRSYXcgPSByZXN1bHQ7CiB9
CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1
cnJlbnRDYWxsRnJhbWVzKCkKK1Bhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKIHsKICAgICBpZiAoIW1fcGF1c2Vk
U2NyaXB0U3RhdGUpCi0gICAgICAgIHJldHVybiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Cisg
ICAgICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNj
cmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQXJyYXk8Q2FsbEZy
YW1lPjo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwQ2Fs
bEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQpAQCAtNTQwLDcgKzU1Miw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzY3Jp
cHRJZCwgY29uc3QgU2NyaXB0CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldE51bWJlcigi
bGluZU51bWJlciIsICZicmVha3BvaW50LmxpbmVOdW1iZXIpOwogICAgICAgICBicmVha3BvaW50
T2JqZWN0LT5nZXROdW1iZXIoImNvbHVtbk51bWJlciIsICZicmVha3BvaW50LmNvbHVtbk51bWJl
cik7CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygiY29uZGl0aW9uIiwgJmJy
ZWFrcG9pbnQuY29uZGl0aW9uKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9j
YXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+Zmlyc3QsIHNjcmlwdElkLCBicmVha3BvaW50
KTsKKyAgICAgICAgUmVmUHRyPExvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50
KGl0LT5maXJzdCwgc2NyaXB0SWQsIGJyZWFrcG9pbnQpOwogICAgICAgICBpZiAobG9jYXRpb24p
CiAgICAgICAgICAgICBtX2Zyb250ZW5kLT5icmVha3BvaW50UmVzb2x2ZWQoaXQtPmZpcnN0LCBs
b2NhdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggYjY0ZmVkYzg5NjBjZjg2ZjQ1ZWU0YjFkOWZkYTE0ZmI1
YmU0M2FhYy4uOTVhOGYzMGRhZWQ5ZjgyOGM5MTgzMGYxMzE4Yzk0ZDE4YjcwYThiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBA
IC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2FibGUoKTsKICAgICBib29s
IGVuYWJsZWQoKTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGN1cnJlbnRDYWxs
RnJhbWVzKCk7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpDYWxsRnJhbWUgPiA+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2Ny
aXB0Jik7CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zSW1wbChFcnJvclN0cmluZyosIGludCk7
CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb2x2ZUJyZWFrcG9pbnQoY29u
c3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFNj
cmlwdEJyZWFrcG9pbnQmKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+IHJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkLCBj
b25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7CiAgICAgdm9p
ZCBjbGVhcigpOwogICAgIGJvb2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKik7CiAgICAgdm9p
ZCBjbGVhckJyZWFrRGV0YWlscygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127048</attachid>
            <date>2012-02-14 14:30:56 -0800</date>
            <delta_ts>2012-02-15 13:07:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78390-20120215023054.patch</filename>
            <type>text/plain</type>
            <size>15882</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1OTk1ZGE2MjQ4YjE0
ZGNhNGUwOTU2ODk1MWQzNzdjN2M1MTc2MC4uMDJjZTVkYWMxNjFhNzkzYzc2Mjk4ZGIwMjAyZWJk
N2M1YTcxNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTEwICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTd2l0Y2ggRGVidWdnZXIgYWdlbnQgdG8gVHlwZUJ1aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50IGNvZGUgaXMgc3dpdGNoZWQgdG8g
VHlwZUJ1aWxkZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRQYXJzZVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTAyLTEyICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQWRkIEFQ
SSB0byBlbmFibGUgaW52ZXJ0ZWQgY29sb3IgZHJhd2luZyBvbiBhIFdlYlZpZXcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXgg
MGM3NGZmYWNmZTlmMmU1N2NiMTI1NmZhYzI4ODZlMTMxZDBjMzFlNC4uMWQ4ZDQzOTVkNGU3Mjk4
YWRmNjk5ZGVjZDM2YzgzYTM3YTI0N2RiZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTU2LDcgKzU2LDggQEAgVFlQRV9O
QU1FX0ZJWF9NQVAgPSB7CiB9CiAKIAotVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJv
emVuc2V0KFtdKQorVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJvemVuc2V0KFsiUnVu
dGltZS5SZW1vdGVPYmplY3QiLCAiUnVudGltZS5Qcm9wZXJ0eURlc2NyaXB0b3IiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVidWdnZXIuRnVuY3Rpb25EZXRh
aWxzIiwgIkRlYnVnZ2VyLkNhbGxGcmFtZSJdKQogCiAKIGNtZGxpbmVfcGFyc2VyID0gb3B0cGFy
c2UuT3B0aW9uUGFyc2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCmluZGV4IDZkMDliMjkxN2I4ODU0MzE2OTIyMjkwYmY0YTQzYWY2ZmE2NWFkNzcuLmJh
ZTdkZTYxYzQ5N2EzNDFhNDNkOGNjOTM5M2Q1NDM0Y2UwMjcyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtNDMsNiArNDMsMTIgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgog
Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBXZWJDb3JlOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZTsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0
ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKQEAgLTc2LDcgKzgyLDcgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1
bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZy
YW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
Ym9vbCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29s
KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgUmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwgYm9vbCogd2FzVGhyb3du
KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGNhbGxGcmFtZXMpOwpAQCAtODUsMTAgKzkxLDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRW
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGluZUFQSSk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQocmV0dXJuQnlWYWx1ZSk7Ci0gICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5n
LCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3VsdFJhdzsKKyAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCAm
cmVzdWx0UmF3LCB3YXNUaHJvd24pOworICAgICpyZXN1bHQgPSBSZW1vdGVPYmplY3Q6OnJ1bnRp
bWVDYXN0KHJlc3VsdFJhdyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9u
RGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25J
ZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKIHsKICAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldEZ1
bmN0aW9uRGV0YWlscyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQp
OwpAQCAtOTksNyArMTA3LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgICAgICAgICAg
KmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7CisgICAgKnJlc3VsdCA9IEZ1
bmN0aW9uRGV0YWlsczo6cnVudGltZUNhc3QocmVzdWx0VmFsdWUpOwogfQogCiB2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBwcm9wZXJ0aWVzKQpAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjCiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgKnByb3BlcnRpZXMgPSByZXN1bHQtPmFzQXJyYXkoKTsKKyAgICAq
cHJvcGVydGllcyA9IEFycmF5PFByb3BlcnR5RGVzY3JpcHRvcj46OnJ1bnRpbWVDYXN0KHJlc3Vs
dCk7CiB9CiAKIE5vZGUqIEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCkKQEAgLTE0MSw3ICsxNDksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpy
ZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB9CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVkU2Ny
aXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKK1Bhc3NS
ZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUo
KSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsICJ3cmFwQ2FsbEZyYW1lcyIpOwpAQCAtMTQ5LDggKzE1Nyw4IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRW
YWx1ZSYgY2FsCiAgICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gZnVuY3Rpb24uY2Fs
bCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gY2FsbEZyYW1lc1ZhbHVl
LnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsK
ICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+YXNBcnJheSgpOwotICAgIHJldHVybiBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpydW50aW1lQ2Fz
dChyZXN1bHQpOworICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGYy
YjdhYzE1MmIzOGE0ZTg5NzQ2YTcwYmYzMTUzNWY0MTNmYjg2MTQuLjg3ZmNmZDg4Y2Q3Yjk4ZmI4
YjU5YmEyNWMxZTU4NWYxZTE2N2M5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEluamVjdGVkU2NyaXB0X2gK
IAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
clR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc2LDE1ICs3Nywx
NSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5
VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sKiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElk
KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBT
dHJpbmcmIG9iamVjdElkKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHdyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZh
bHVlJik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+ID4gd3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsK
ICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2Ny
aXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3NDJkMjg4ZGY5
YzgzOWI3Y2YxZWNiMGY5NjQ4ODIzZDUwNDI4MTc2Li5iMWExNTUwOTZhODM4NmEzZTY5YjIxNjNh
MWM4YTFkNzgxYzNmNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC00NCw2ICs0NCwxMSBAQAogI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGVidWdn
ZXJBZ2VudFN0YXRlIHsKQEAgLTIxMCw4ICsyMTUsMTIgQEAgc3RhdGljIGJvb2wgbWF0Y2hlcyhj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzUmVnZXgpCiAg
ICAgcmV0dXJuIHVybCA9PSBwYXR0ZXJuOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogb3V0QnJl
YWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMpCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0
aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24s
IFN0cmluZyogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlv
bnNSYXcpCiB7CisgICAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbjsKKworICAgIFJlZlB0cjxBcnJheTxMb2NhdGlvbj4gPiBsb2NhdGlvbnMgPSBBcnJheTxM
b2NhdGlvbj46OmNyZWF0ZSgpOworICAgIGxvY2F0aW9uc1JhdyA9IGxvY2F0aW9uczsKICAgICBp
ZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgICplcnJvclN0
cmluZyA9ICJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkLiI7CiAgICAg
ICAgIHJldHVybjsKQEAgLTMxMCw4ICszMTksMTAgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAog
ICAgIHJlc3VtZShlcnJvclN0cmluZyk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcm
IGJyZWFrcG9pbnRJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2NyaXB0QnJlYWtw
b2ludCYgYnJlYWtwb2ludCkKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpMb2NhdGlvbj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQo
Y29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0
IFNjcmlwdEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7CisgICAgdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjsKKwogICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9y
IHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQoc2NyaXB0SWQpOwogICAgIGlmIChzY3Jp
cHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMzMw
LDcgKzM0MSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpCiAgICAgICAgIGRlYnVnU2VydmVy
QnJlYWtwb2ludElkc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtw
b2ludElkcy5zZXQoYnJlYWtwb2ludElkLCBWZWN0b3I8U3RyaW5nPigpKS5maXJzdDsKICAgICBk
ZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvci0+c2Vjb25kLmFwcGVuZChkZWJ1Z1NlcnZl
ckJyZWFrcG9pbnRJZCk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4gbG9jYXRpb24gPSBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUo
KQorICAgIFJlZlB0cjxMb2NhdGlvbj4gbG9jYXRpb24gPSBMb2NhdGlvbjo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldFNjcmlwdElkKHNjcmlwdElkKQogICAgICAgICAuc2V0TGluZU51bWJlcihhY3R1
YWxMaW5lTnVtYmVyKTsKICAgICBsb2NhdGlvbi0+c2V0Q29sdW1uTnVtYmVyKGFjdHVhbENvbHVt
bk51bWJlcik7CkBAIC0zODAsMTQgKzM5MSwxNiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwog
ICAgICAgICAqZXJyb3IgPSAiTm8gc2NyaXB0IGZvciBpZDogIiArIHNjcmlwdElkOwogfQogCi12
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGRldGFpbHMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0
aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rp
b25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGRldGFpbHNSYXcpCiB7CiAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChmdW5jdGlvbklkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUg
aGFzIGdvbmUiOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIFJlZlB0cjxGdW5jdGlvbkRl
dGFpbHM+IGRldGFpbHM7CiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0RnVuY3Rpb25EZXRhaWxzKGVy
cm9yU3RyaW5nLCBmdW5jdGlvbklkLCAmZGV0YWlscyk7CisgICAgZGV0YWlsc1JhdyA9IGRldGFp
bHM7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4
dFN0YXRlbWVudChjb25zdCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSkKQEAgLTQ3MCwyNCArNDgzLDI2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNJbXBsKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywKICAgICAgICAgbV9zdGF0ZS0+c2V0TG9uZyhEZWJ1Z2dlckFnZW50U3RhdGU6OnBhdXNlT25F
eGNlcHRpb25zU3RhdGUsIHBhdXNlU3RhdGUpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIHJlc3VsdCwgYm9vbCogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiByZXN1bHRSYXcsIGJvb2wqIHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNj
cmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFz
IGdvbmUiOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIFJlZlB0cjxSZW1vdGVPYmplY3Q+
IHJlc3VsdDsKICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3Ry
aW5nLCBtX2N1cnJlbnRDYWxsU3RhY2ssIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RH
cm91cCA/ICpvYmplY3RHcm91cCA6ICIiLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkgPyAqaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJIDogZmFsc2UsIHJldHVybkJ5VmFsdWUgPyAqcmV0dXJuQnlWYWx1ZSA6
IGZhbHNlLCAmcmVzdWx0LCB3YXNUaHJvd24pOworICAgIHJlc3VsdFJhdyA9IHJlc3VsdDsKIH0K
IAotUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3Vy
cmVudENhbGxGcmFtZXMoKQorUGFzc1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+ID4gSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQogewogICAgIGlmICghbV9wYXVzZWRT
Y3JpcHRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFtZT46OmNyZWF0ZSgpOwogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0Rm9yKG1fcGF1c2VkU2NyaXB0U3RhdGUpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxDYWxsRnJh
bWU+OjpjcmVhdGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxs
RnJhbWVzKG1fY3VycmVudENhbGxTdGFjayk7CiB9CkBAIC01MTcsNiArNTMyLDggQEAgU3RyaW5n
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3Jp
cHQmIHNjcmlwdCkKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJj
ZShjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHQmIHNjcmlwdCkKIHsKKyAgICB1
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOworCiAgICAgLy8g
RG9uJ3Qgc2VuZCBzY3JpcHQgY29udGVudCB0byB0aGUgZnJvbnQgZW5kIHVudGlsIGl0J3MgcmVh
bGx5IG5lZWRlZC4KICAgICBjb25zdCBib29sKiBpc0NvbnRlbnRTY3JpcHQgPSBzY3JpcHQuaXND
b250ZW50U2NyaXB0ID8gJnNjcmlwdC5pc0NvbnRlbnRTY3JpcHQgOiAwOwogICAgIFN0cmluZyBz
b3VyY2VNYXBVUkwgPSBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoc2NyaXB0KTsKQEAgLTU0MCw3ICs1
NTcsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKGNvbnN0
IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFNjcmlwdAogICAgICAgICBicmVha3BvaW50T2JqZWN0
LT5nZXROdW1iZXIoImxpbmVOdW1iZXIiLCAmYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKICAgICAg
ICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0TnVtYmVyKCJjb2x1bW5OdW1iZXIiLCAmYnJlYWtwb2lu
dC5jb2x1bW5OdW1iZXIpOwogICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRTdHJpbmcoImNv
bmRpdGlvbiIsICZicmVha3BvaW50LmNvbmRpdGlvbik7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQtPmZpcnN0LCBzY3JpcHRJ
ZCwgYnJlYWtwb2ludCk7CisgICAgICAgIFJlZlB0cjxMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNv
bHZlQnJlYWtwb2ludChpdC0+Zmlyc3QsIHNjcmlwdElkLCBicmVha3BvaW50KTsKICAgICAgICAg
aWYgKGxvY2F0aW9uKQogICAgICAgICAgICAgbV9mcm9udGVuZC0+YnJlYWtwb2ludFJlc29sdmVk
KGl0LT5maXJzdCwgbG9jYXRpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGI2NGZlZGM4OTYwY2Y4NmY0NWVl
NGIxZDlmZGExNGZiNWJlNDNhYWMuLjk1YThmMzBkYWVkOWY4MjhjOTE4MzBmMTMxOGM5NGQxOGI3
MGE4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNhYmxl
KCk7CiAgICAgYm9vbCBlbmFibGVkKCk7CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBjdXJyZW50Q2FsbEZyYW1lcygpOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lID4gPiBjdXJyZW50Q2FsbEZyYW1lcygp
OwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgc2NyaXB0
SWQsIGNvbnN0IFNjcmlwdCYpOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNl
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGlu
dCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKQEAgLTEzOSw3ICsxMzks
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc0ltcGwoRXJyb3JT
dHJpbmcqLCBpbnQpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc29sdmVC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dElkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJy
ZWFrcG9pbnRJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2NyaXB0QnJlYWtwb2lu
dCYpOwogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIGFzc2VydFBhdXNlZChFcnJvclN0cmlu
ZyopOwogICAgIHZvaWQgY2xlYXJCcmVha0RldGFpbHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127222</attachid>
            <date>2012-02-15 13:08:07 -0800</date>
            <delta_ts>2012-02-15 14:01:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78390-20120216010805.patch</filename>
            <type>text/plain</type>
            <size>15442</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1OTk1ZGE2MjQ4YjE0
ZGNhNGUwOTU2ODk1MWQzNzdjN2M1MTc2MC4uMDJjZTVkYWMxNjFhNzkzYzc2Mjk4ZGIwMjAyZWJk
N2M1YTcxNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTEwICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTd2l0Y2ggRGVidWdnZXIgYWdlbnQgdG8gVHlwZUJ1aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50IGNvZGUgaXMgc3dpdGNoZWQgdG8g
VHlwZUJ1aWxkZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRQYXJzZVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTAyLTEyICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQWRkIEFQ
SSB0byBlbmFibGUgaW52ZXJ0ZWQgY29sb3IgZHJhd2luZyBvbiBhIFdlYlZpZXcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXgg
MGM3NGZmYWNmZTlmMmU1N2NiMTI1NmZhYzI4ODZlMTMxZDBjMzFlNC4uMWQ4ZDQzOTVkNGU3Mjk4
YWRmNjk5ZGVjZDM2YzgzYTM3YTI0N2RiZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTU2LDcgKzU2LDggQEAgVFlQRV9O
QU1FX0ZJWF9NQVAgPSB7CiB9CiAKIAotVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJv
emVuc2V0KFtdKQorVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJvemVuc2V0KFsiUnVu
dGltZS5SZW1vdGVPYmplY3QiLCAiUnVudGltZS5Qcm9wZXJ0eURlc2NyaXB0b3IiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVidWdnZXIuRnVuY3Rpb25EZXRh
aWxzIiwgIkRlYnVnZ2VyLkNhbGxGcmFtZSJdKQogCiAKIGNtZGxpbmVfcGFyc2VyID0gb3B0cGFy
c2UuT3B0aW9uUGFyc2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCmluZGV4IDZkMDliMjkxN2I4ODU0MzE2OTIyMjkwYmY0YTQzYWY2ZmE2NWFkNzcuLmJh
ZTdkZTYxYzQ5N2EzNDFhNDNkOGNjOTM5M2Q1NDM0Y2UwMjcyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtNDMsNiArNDMsMTIgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgog
Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBXZWJDb3JlOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZTsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0
ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKQEAgLTc2LDcgKzgyLDcgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1
bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZy
YW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
Ym9vbCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29s
KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgUmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwgYm9vbCogd2FzVGhyb3du
KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGNhbGxGcmFtZXMpOwpAQCAtODUsMTAgKzkxLDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRW
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGluZUFQSSk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQocmV0dXJuQnlWYWx1ZSk7Ci0gICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5n
LCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3VsdFJhdzsKKyAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCAm
cmVzdWx0UmF3LCB3YXNUaHJvd24pOworICAgICpyZXN1bHQgPSBSZW1vdGVPYmplY3Q6OnJ1bnRp
bWVDYXN0KHJlc3VsdFJhdyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9u
RGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25J
ZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKIHsKICAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldEZ1
bmN0aW9uRGV0YWlscyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQp
OwpAQCAtOTksNyArMTA3LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgICAgICAgICAg
KmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7CisgICAgKnJlc3VsdCA9IEZ1
bmN0aW9uRGV0YWlsczo6cnVudGltZUNhc3QocmVzdWx0VmFsdWUpOwogfQogCiB2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBwcm9wZXJ0aWVzKQpAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjCiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgKnByb3BlcnRpZXMgPSByZXN1bHQtPmFzQXJyYXkoKTsKKyAgICAq
cHJvcGVydGllcyA9IEFycmF5PFByb3BlcnR5RGVzY3JpcHRvcj46OnJ1bnRpbWVDYXN0KHJlc3Vs
dCk7CiB9CiAKIE5vZGUqIEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCkKQEAgLTE0MSw3ICsxNDksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpy
ZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB9CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVkU2Ny
aXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKK1Bhc3NS
ZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUo
KSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsICJ3cmFwQ2FsbEZyYW1lcyIpOwpAQCAtMTQ5LDggKzE1Nyw4IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRW
YWx1ZSYgY2FsCiAgICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gZnVuY3Rpb24uY2Fs
bCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gY2FsbEZyYW1lc1ZhbHVl
LnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsK
ICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+YXNBcnJheSgpOwotICAgIHJldHVybiBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpydW50aW1lQ2Fz
dChyZXN1bHQpOworICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGYy
YjdhYzE1MmIzOGE0ZTg5NzQ2YTcwYmYzMTUzNWY0MTNmYjg2MTQuLjg3ZmNmZDg4Y2Q3Yjk4ZmI4
YjU5YmEyNWMxZTU4NWYxZTE2N2M5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEluamVjdGVkU2NyaXB0X2gK
IAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
clR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc2LDE1ICs3Nywx
NSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5
VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sKiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElk
KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBT
dHJpbmcmIG9iamVjdElkKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHdyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZh
bHVlJik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+ID4gd3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsK
ICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2Ny
aXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3NDJkMjg4ZGY5
YzgzOWI3Y2YxZWNiMGY5NjQ4ODIzZDUwNDI4MTc2Li40YjNkZDIzNjEzYWIwZWM4ODgzOTZlNGZi
ZTlkYTNlMjg3N2NmMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC00NCw2ICs0NCwxMSBAQAogI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGVidWdn
ZXJBZ2VudFN0YXRlIHsKQEAgLTIxMCw4ICsyMTUsMTAgQEAgc3RhdGljIGJvb2wgbWF0Y2hlcyhj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzUmVnZXgpCiAg
ICAgcmV0dXJuIHVybCA9PSBwYXR0ZXJuOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogb3V0QnJl
YWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMpCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0
aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24s
IFN0cmluZyogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlv
bnNSYXcpCiB7CisgICAgUmVmUHRyPEFycmF5PFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+ID4gbG9jYXRpb25zID0gQXJyYXk8V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOworICAgIGxvY2F0aW9uc1JhdyA9IGxvY2F0aW9u
czsKICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAg
ICplcnJvclN0cmluZyA9ICJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVk
LiI7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMCw3ICszMTcsNyBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0CiAgICAgcmVzdW1lKGVycm9yU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0
IFN0cmluZyYgYnJlYWtwb2ludElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3Jp
cHRCcmVha3BvaW50JiBicmVha3BvaW50KQorUGFzc1JlZlB0cjxXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJl
YWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHRJ
ZCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKIHsKICAgICBTY3JpcHRzTWFw
OjppdGVyYXRvciBzY3JpcHRJdGVyYXRvciA9IG1fc2NyaXB0cy5maW5kKHNjcmlwdElkKTsKICAg
ICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9zY3JpcHRzLmVuZCgpKQpAQCAtMzMwLDcgKzMzNyw3
IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpy
ZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpCiAgICAgICAgIGRlYnVnU2VydmVyQnJlYWtwb2lu
dElkc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5z
ZXQoYnJlYWtwb2ludElkLCBWZWN0b3I8U3RyaW5nPigpKS5maXJzdDsKICAgICBkZWJ1Z1NlcnZl
ckJyZWFrcG9pbnRJZHNJdGVyYXRvci0+c2Vjb25kLmFwcGVuZChkZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJZCk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9j
YXRpb24gPSBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQorICAgIFJl
ZlB0cjxXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9
IFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRTY3JpcHRJZChzY3JpcHRJZCkKICAgICAgICAgLnNldExpbmVOdW1iZXIoYWN0dWFs
TGluZU51bWJlcik7CiAgICAgbG9jYXRpb24tPnNldENvbHVtbk51bWJlcihhY3R1YWxDb2x1bW5O
dW1iZXIpOwpAQCAtMzgwLDE0ICszODcsMTYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAg
ICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBkZXRhaWxzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlv
bkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9u
SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBkZXRhaWxzUmF3KQogewogICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVk
U2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1lIGhh
cyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBSZWZQdHI8RnVuY3Rpb25EZXRh
aWxzPiBkZXRhaWxzOwogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWlscyhlcnJv
clN0cmluZywgZnVuY3Rpb25JZCwgJmRldGFpbHMpOworICAgIGRldGFpbHNSYXcgPSBkZXRhaWxz
OwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRT
dGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGRhdGEpCkBAIC00NzAsMjQgKzQ3OSwyNiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zSW1wbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
CiAgICAgICAgIG1fc3RhdGUtPnNldExvbmcoRGVidWdnZXJBZ2VudFN0YXRlOjpwYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlLCBwYXVzZVN0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiByZXN1bHQsIGJvb2wqIHdhc1Rocm93bikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3Ry
aW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgcmVzdWx0UmF3LCBib29sKiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1lIGhhcyBn
b25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBSZWZQdHI8UmVtb3RlT2JqZWN0PiBy
ZXN1bHQ7CiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJvclN0cmlu
ZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3Jv
dXAgPyAqb2JqZWN0R3JvdXAgOiAiIiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJID8gKmluY2x1ZGVD
b21tYW5kTGluZUFQSSA6IGZhbHNlLCByZXR1cm5CeVZhbHVlID8gKnJldHVybkJ5VmFsdWUgOiBm
YWxzZSwgJnJlc3VsdCwgd2FzVGhyb3duKTsKKyAgICByZXN1bHRSYXcgPSByZXN1bHQ7CiB9CiAK
LVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJl
bnRDYWxsRnJhbWVzKCkKK1Bhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKIHsKICAgICBpZiAoIW1fcGF1c2VkU2Ny
aXB0U3RhdGUpCi0gICAgICAgIHJldHVybiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAg
ICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlw
dEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9W
YWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQXJyYXk8Q2FsbEZyYW1l
Pjo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwQ2FsbEZy
YW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQpAQCAtNTQwLDcgKzU1MSw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzY3JpcHRJ
ZCwgY29uc3QgU2NyaXB0CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldE51bWJlcigibGlu
ZU51bWJlciIsICZicmVha3BvaW50LmxpbmVOdW1iZXIpOwogICAgICAgICBicmVha3BvaW50T2Jq
ZWN0LT5nZXROdW1iZXIoImNvbHVtbk51bWJlciIsICZicmVha3BvaW50LmNvbHVtbk51bWJlcik7
CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygiY29uZGl0aW9uIiwgJmJyZWFr
cG9pbnQuY29uZGl0aW9uKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRp
b24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+Zmlyc3QsIHNjcmlwdElkLCBicmVha3BvaW50KTsK
KyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQtPmZpcnN0LCBzY3JpcHRJZCwgYnJlYWtw
b2ludCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPmJy
ZWFrcG9pbnRSZXNvbHZlZChpdC0+Zmlyc3QsIGxvY2F0aW9uKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCBiNjRm
ZWRjODk2MGNmODZmNDVlZTRiMWQ5ZmRhMTRmYjViZTQzYWFjLi45NWE4ZjMwZGFlZDlmODI4Yzkx
ODMwZjEzMThjOTRkMThiNzBhOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlzYWJsZSgpOwogICAgIGJvb2wgZW5hYmxlZCgpOwogCi0gICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gY3VycmVudENhbGxGcmFtZXMoKTsKKyAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZSA+ID4gY3Vy
cmVudENhbGxGcmFtZXMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShjb25z
dCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmFp
bGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBp
bnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
CkBAIC0xMzksNyArMTM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNJbXBsKEVycm9yU3RyaW5nKiwgaW50KTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOworICAgIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQo
Y29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0
IFNjcmlwdEJyZWFrcG9pbnQmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgYm9vbCBhc3NlcnRQ
YXVzZWQoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGNsZWFyQnJlYWtEZXRhaWxzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127231</attachid>
            <date>2012-02-15 14:01:21 -0800</date>
            <delta_ts>2012-02-17 12:41:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78390-20120216020119.patch</filename>
            <type>text/plain</type>
            <size>14754</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1OTk1ZGE2MjQ4YjE0
ZGNhNGUwOTU2ODk1MWQzNzdjN2M1MTc2MC4uMDJjZTVkYWMxNjFhNzkzYzc2Mjk4ZGIwMjAyZWJk
N2M1YTcxNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTEwICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTd2l0Y2ggRGVidWdnZXIgYWdlbnQgdG8gVHlwZUJ1aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50IGNvZGUgaXMgc3dpdGNoZWQgdG8g
VHlwZUJ1aWxkZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRQYXJzZVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTAyLTEyICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQWRkIEFQ
SSB0byBlbmFibGUgaW52ZXJ0ZWQgY29sb3IgZHJhd2luZyBvbiBhIFdlYlZpZXcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXgg
MGM3NGZmYWNmZTlmMmU1N2NiMTI1NmZhYzI4ODZlMTMxZDBjMzFlNC4uMWQ4ZDQzOTVkNGU3Mjk4
YWRmNjk5ZGVjZDM2YzgzYTM3YTI0N2RiZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTU2LDcgKzU2LDggQEAgVFlQRV9O
QU1FX0ZJWF9NQVAgPSB7CiB9CiAKIAotVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJv
emVuc2V0KFtdKQorVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJvemVuc2V0KFsiUnVu
dGltZS5SZW1vdGVPYmplY3QiLCAiUnVudGltZS5Qcm9wZXJ0eURlc2NyaXB0b3IiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVidWdnZXIuRnVuY3Rpb25EZXRh
aWxzIiwgIkRlYnVnZ2VyLkNhbGxGcmFtZSJdKQogCiAKIGNtZGxpbmVfcGFyc2VyID0gb3B0cGFy
c2UuT3B0aW9uUGFyc2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCmluZGV4IDZkMDliMjkxN2I4ODU0MzE2OTIyMjkwYmY0YTQzYWY2ZmE2NWFkNzcuLmJh
ZTdkZTYxYzQ5N2EzNDFhNDNkOGNjOTM5M2Q1NDM0Y2UwMjcyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtNDMsNiArNDMsMTIgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgog
Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBXZWJDb3JlOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZTsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0
ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKQEAgLTc2LDcgKzgyLDcgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1
bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZy
YW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
Ym9vbCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29s
KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgUmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwgYm9vbCogd2FzVGhyb3du
KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGNhbGxGcmFtZXMpOwpAQCAtODUsMTAgKzkxLDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRW
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGluZUFQSSk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQocmV0dXJuQnlWYWx1ZSk7Ci0gICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5n
LCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3VsdFJhdzsKKyAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCAm
cmVzdWx0UmF3LCB3YXNUaHJvd24pOworICAgICpyZXN1bHQgPSBSZW1vdGVPYmplY3Q6OnJ1bnRp
bWVDYXN0KHJlc3VsdFJhdyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9u
RGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25J
ZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKIHsKICAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldEZ1
bmN0aW9uRGV0YWlscyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQp
OwpAQCAtOTksNyArMTA3LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgICAgICAgICAg
KmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7CisgICAgKnJlc3VsdCA9IEZ1
bmN0aW9uRGV0YWlsczo6cnVudGltZUNhc3QocmVzdWx0VmFsdWUpOwogfQogCiB2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBwcm9wZXJ0aWVzKQpAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjCiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgKnByb3BlcnRpZXMgPSByZXN1bHQtPmFzQXJyYXkoKTsKKyAgICAq
cHJvcGVydGllcyA9IEFycmF5PFByb3BlcnR5RGVzY3JpcHRvcj46OnJ1bnRpbWVDYXN0KHJlc3Vs
dCk7CiB9CiAKIE5vZGUqIEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCkKQEAgLTE0MSw3ICsxNDksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpy
ZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB9CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVkU2Ny
aXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKK1Bhc3NS
ZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUo
KSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsICJ3cmFwQ2FsbEZyYW1lcyIpOwpAQCAtMTQ5LDggKzE1Nyw4IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRW
YWx1ZSYgY2FsCiAgICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gZnVuY3Rpb24uY2Fs
bCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gY2FsbEZyYW1lc1ZhbHVl
LnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsK
ICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+YXNBcnJheSgpOwotICAgIHJldHVybiBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpydW50aW1lQ2Fz
dChyZXN1bHQpOworICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGYy
YjdhYzE1MmIzOGE0ZTg5NzQ2YTcwYmYzMTUzNWY0MTNmYjg2MTQuLjg3ZmNmZDg4Y2Q3Yjk4ZmI4
YjU5YmEyNWMxZTU4NWYxZTE2N2M5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEluamVjdGVkU2NyaXB0X2gK
IAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
clR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc2LDE1ICs3Nywx
NSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5
VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sKiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElk
KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBT
dHJpbmcmIG9iamVjdElkKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHdyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZh
bHVlJik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+ID4gd3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsK
ICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2Ny
aXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3NDJkMjg4ZGY5
YzgzOWI3Y2YxZWNiMGY5NjQ4ODIzZDUwNDI4MTc2Li42YjdlMTA4Y2U0YzBlZmZjZTdiMmNiMzkz
ZTFiYmQwZjU1YzA5OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC00NCw2ICs0NCwxMSBAQAogI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGVidWdn
ZXJBZ2VudFN0YXRlIHsKQEAgLTIxMCw4ICsyMTUsMTAgQEAgc3RhdGljIGJvb2wgbWF0Y2hlcyhj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzUmVnZXgpCiAg
ICAgcmV0dXJuIHVybCA9PSBwYXR0ZXJuOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogb3V0QnJl
YWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMpCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0
aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24s
IFN0cmluZyogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlv
bnNSYXcpCiB7CisgICAgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRp
b24+ID4gbG9jYXRpb25zID0gQXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj46
OmNyZWF0ZSgpOworICAgIGxvY2F0aW9uc1JhdyA9IGxvY2F0aW9uczsKICAgICBpZiAoIW9wdGlv
bmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJF
aXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkLiI7CiAgICAgICAgIHJldHVy
bjsKQEAgLTMxMCw3ICszMTcsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRp
bnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgcmVzdW1l
KGVycm9yU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2lu
dElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBicmVh
a3BvaW50KQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFr
cG9pbnRJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYg
YnJlYWtwb2ludCkKIHsKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBzY3JpcHRJdGVyYXRvciA9
IG1fc2NyaXB0cy5maW5kKHNjcmlwdElkKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9z
Y3JpcHRzLmVuZCgpKQpAQCAtMzgwLDE0ICszODcsMTYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcm
IHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0K
IAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiBkZXRhaWxzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRG
dW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1
bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBkZXRhaWxzUmF3KQogewogICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
amVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CiAgICAgaWYgKGluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZy
YW1lIGhhcyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBSZWZQdHI8RnVuY3Rp
b25EZXRhaWxzPiBkZXRhaWxzOwogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWls
cyhlcnJvclN0cmluZywgZnVuY3Rpb25JZCwgJmRldGFpbHMpOworICAgIGRldGFpbHNSYXcgPSBk
ZXRhaWxzOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VP
bk5leHRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEpCkBAIC00NzAsMjQgKzQ3OSwyNiBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zSW1wbChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsCiAgICAgICAgIG1fc3RhdGUtPnNldExvbmcoRGVidWdnZXJBZ2VudFN0YXRlOjpwYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlLCBwYXVzZVN0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiByZXN1bHQsIGJvb2wqIHdhc1Rocm93bikKK3ZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgcmVzdWx0UmF3LCBib29sKiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0
Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1l
IGhhcyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBSZWZQdHI8UmVtb3RlT2Jq
ZWN0PiByZXN1bHQ7CiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJv
clN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2Jq
ZWN0R3JvdXAgPyAqb2JqZWN0R3JvdXAgOiAiIiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJID8gKmlu
Y2x1ZGVDb21tYW5kTGluZUFQSSA6IGZhbHNlLCByZXR1cm5CeVZhbHVlID8gKnJldHVybkJ5VmFs
dWUgOiBmYWxzZSwgJnJlc3VsdCwgd2FzVGhyb3duKTsKKyAgICByZXN1bHRSYXcgPSByZXN1bHQ7
CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmN1cnJlbnRDYWxsRnJhbWVzKCkKK1Bhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKIHsKICAgICBpZiAoIW1fcGF1
c2VkU2NyaXB0U3RhdGUpCi0gICAgICAgIHJldHVybiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7
CisgICAgICAgIHJldHVybiBBcnJheTxDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3Rl
ZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQXJyYXk8Q2Fs
bEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFw
Q2FsbEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQpAQCAtNTQwLDcgKzU1MSw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBz
Y3JpcHRJZCwgY29uc3QgU2NyaXB0CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldE51bWJl
cigibGluZU51bWJlciIsICZicmVha3BvaW50LmxpbmVOdW1iZXIpOwogICAgICAgICBicmVha3Bv
aW50T2JqZWN0LT5nZXROdW1iZXIoImNvbHVtbk51bWJlciIsICZicmVha3BvaW50LmNvbHVtbk51
bWJlcik7CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygiY29uZGl0aW9uIiwg
JmJyZWFrcG9pbnQuY29uZGl0aW9uKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
bG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+Zmlyc3QsIHNjcmlwdElkLCBicmVha3Bv
aW50KTsKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxv
Y2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQtPmZpcnN0LCBzY3JpcHRJZCwgYnJlYWtwb2lu
dCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPmJyZWFr
cG9pbnRSZXNvbHZlZChpdC0+Zmlyc3QsIGxvY2F0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCBiNjRmZWRj
ODk2MGNmODZmNDVlZTRiMWQ5ZmRhMTRmYjViZTQzYWFjLi5hNmFiZmE0MzUzMGEyOTdlZWZkNjM4
NmU4YWRmZTBkNDUzYzNiOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzYWJsZSgpOwogICAgIGJvb2wgZW5hYmxlZCgpOwogCi0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gY3VycmVudENhbGxGcmFtZXMoKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4gPiBjdXJyZW50
Q2FsbEZyYW1lcygpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKGNvbnN0IFN0
cmluZyYgc2NyaXB0SWQsIGNvbnN0IFNjcmlwdCYpOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRU
b1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBm
aXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKQEAg
LTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9u
c0ltcGwoRXJyb3JTdHJpbmcqLCBpbnQpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7CisgICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIGJyZWFrcG9pbnRJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2Ny
aXB0QnJlYWtwb2ludCYpOwogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIGFzc2VydFBhdXNl
ZChFcnJvclN0cmluZyopOwogICAgIHZvaWQgY2xlYXJCcmVha0RldGFpbHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127630</attachid>
            <date>2012-02-17 12:41:56 -0800</date>
            <delta_ts>2012-02-21 03:44:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78390-20120218004154.patch</filename>
            <type>text/plain</type>
            <size>14738</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNjZTEwNGY1MWFmODg5
MzRiN2M0MmNlY2Q4NTVhNzlhZWJhYjUzMy4uYWM4ZTgzMWI4NGY5OWZiNDczODZkZDczYjc5NmNm
YmZhYjU0ZmZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTE4ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTd2l0Y2ggRGVidWdnZXIgYWdlbnQgdG8gVHlwZUJ1aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50IGNvZGUgaXMgc3dpdGNoZWQgdG8g
VHlwZUJ1aWxkZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRQYXJzZVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTAyLTE3ICBN
aWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1NSZWdpb25z
XUltcGxlbWVudCBOYW1lZEZsb3c6Om92ZXJmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CmluZGV4IGMzZTIxNjUwM2VhYjc0YzRl
NGI4YTM0YzM1NWMzY2I1YTE0N2JlNjIuLmEwNWY0MmMyMzRkMmIyNDhkMDE0YmQwNTdjMjYyM2Y4
OTQ5NDBiNDMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5CkBAIC01Niw3ICs1Niw4IEBAIFRZUEVfTkFNRV9GSVhfTUFQID0gewog
fQogCiAKLVRZUEVTX1dJVEhfUlVOVElNRV9DQVNUX1NFVCA9IGZyb3plbnNldChbXSkKK1RZUEVT
X1dJVEhfUlVOVElNRV9DQVNUX1NFVCA9IGZyb3plbnNldChbIlJ1bnRpbWUuUmVtb3RlT2JqZWN0
IiwgIlJ1bnRpbWUuUHJvcGVydHlEZXNjcmlwdG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkRlYnVnZ2VyLkZ1bmN0aW9uRGV0YWlscyIsICJEZWJ1Z2dlci5D
YWxsRnJhbWUiXSkKIAogCiBjbWRsaW5lX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCA0N2Uw
OWM3YWI0OWM4YTVhMGM2Y2FiYzE5MWQ3MzIwMzhiNWY5MzY5Li43YTBhYmQ3MGZhNWEzMzM0MGU2
Yjg2OGEwOTZjODVmOGQ2MGUyYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAKQEAgLTQzLDYgKzQzLDEyIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKIAordXNpbmcgV2ViQ29yZTo6
VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVy
dHlEZXNjcmlwdG9yOwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5j
dGlvbkRldGFpbHM7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3Rl
ZFNjcmlwdCgpCkBAIC03Niw3ICs4Miw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5j
dGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplCiAgICAg
bWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOwog
fQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmlu
ZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1
ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCwgYm9vbCogd2FzVGhyb3duKQordm9p
ZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxG
cmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIFJlZlB0
cjxSZW1vdGVPYmplY3Q+KiByZXN1bHQsIGJvb2wqIHdhc1Rocm93bikKIHsKICAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlT25D
YWxsRnJhbWUiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKQEAg
LTg1LDEwICs5MSwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1l
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VgogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChp
bmNsdWRlQ29tbWFuZExpbmVBUEkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHJldHVy
bkJ5VmFsdWUpOwotICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3Vs
dCwgd2FzVGhyb3duKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHRSYXc7Cisg
ICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgJnJlc3VsdFJhdywgd2FzVGhy
b3duKTsKKyAgICAqcmVzdWx0ID0gUmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyZXN1bHRSYXcp
OwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiByZXN1bHQpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFp
bHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJl
ZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRGdW5jdGlvbkRldGFpbHMiKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKQEAgLTk5LDcgKzEwNyw3
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJJ
bnRlcm5hbCBlcnJvciI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgKnJlc3VsdCA9IHJl
c3VsdFZhbHVlLT5hc09iamVjdCgpOworICAgICpyZXN1bHQgPSBGdW5jdGlvbkRldGFpbHM6OnJ1
bnRpbWVDYXN0KHJlc3VsdFZhbHVlKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJv
cGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcHJvcGVydGllcykK
QEAgLTExNCw3ICsxMjIsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplYwogICAgICAgICAqZXJy
b3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
ICpwcm9wZXJ0aWVzID0gcmVzdWx0LT5hc0FycmF5KCk7CisgICAgKnByb3BlcnRpZXMgPSBBcnJh
eTxQcm9wZXJ0eURlc2NyaXB0b3I+OjpydW50aW1lQ2FzdChyZXN1bHQpOwogfQogCiBOb2RlKiBJ
bmplY3RlZFNjcmlwdDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCkBA
IC0xNDEsNyArMTQ5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChjb25z
dCBTdHJpbmcmIG9iamVjdElkKQogfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFt
ZXMoY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMpCitQYXNzUmVmUHRyPEFycmF5PENhbGxG
cmFtZT4gPiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUm
IGNhbGxGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwogICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAid3JhcENhbGxGcmFt
ZXMiKTsKQEAgLTE1MSw4ICsxNTksOCBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmIGNhbAogICAgIEFT
U0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9
IGNhbGxGcmFtZXNWYWx1ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qu
c2NyaXB0U3RhdGUoKSk7CiAgICAgaWYgKHJlc3VsdC0+dHlwZSgpID09IEluc3BlY3RvclZhbHVl
OjpUeXBlQXJyYXkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPmFzQXJyYXkoKTsKLSAgICByZXR1
cm4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQXJyYXk8Q2FsbEZy
YW1lPjo6cnVudGltZUNhc3QocmVzdWx0KTsKKyAgICByZXR1cm4gQXJyYXk8Q2FsbEZyYW1lPjo6
Y3JlYXRlKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuaAppbmRleCA0Njc3NmZkOTQ2MjQ4OTBhYjQwMWI5YjM2ODI4M2U2YTFiZThjZjM0Li44
NGQ5YTc4ZWQzNmYwYzhhNTg1NmFjODA1MjVjODUxMmRjNTc2YTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBJ
bmplY3RlZFNjcmlwdF9oCiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CkBAIC03OCwxNSArNzksMTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCByZXR1cm5CeVZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCogd2FzVGhyb3duKTsKLSAgICB2b2lkIGdl
dEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRGdW5jdGlvbkRl
dGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCk7CiAgICAgdm9pZCBn
ZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBv
d25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwogICAgIE5vZGUq
IG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKICAgICB2b2lkIHJlbGVh
c2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB3cmFwQ2FsbEZyYW1l
cyhjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+IHdyYXBDYWxsRnJhbWVzKGNvbnN0
IFNjcmlwdFZhbHVlJik7CiAjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiB3cmFwT2JqZWN0KFNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggNzQyZDI4OGRmOWM4MzliN2NmMWVjYjBmOTY0ODgyM2Q1MDQyODE3Ni4uY2Rl
ZjVkZTFiYTBjYmMxOWMwODBmNDM1NTRlNWJhMjdhNzQ0NjFkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNDQsNiAr
NDQsMTAgQEAKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcg
V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7Cit1c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEZWJ1Z2dlckFnZW50U3RhdGUgewpAQCAtMjEwLDggKzIx
NCwxMCBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKICAgICByZXR1cm4gdXJsID09IHBhdHRlcm47CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qg
b3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3Qg
aW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRp
b25hbENvbmRpdGlvbiwgU3RyaW5nKiBvdXRCcmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtw
b2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxV
UkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nKiBjb25zdCBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5nKiBvdXRCcmVha3BvaW50SWQsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4mIGxvY2F0aW9uc1JhdykKIHsKKyAgICBSZWZQdHI8QXJyYXk8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gPiBsb2NhdGlvbnMgPSBBcnJheTxUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CisgICAgbG9jYXRpb25zUmF3
ID0gbG9jYXRpb25zOwogICAgIGlmICghb3B0aW9uYWxVUkwgPT0gIW9wdGlvbmFsVVJMUmVnZXgp
IHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBi
ZSBzcGVjaWZpZWQuIjsKICAgICAgICAgcmV0dXJuOwpAQCAtMzEwLDcgKzMxNiw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QKICAgICByZXN1bWUoZXJyb3JTdHJpbmcpOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFr
cG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQs
IGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCitQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dElkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBicmVha3BvaW50KQogewogICAgIFNjcmlwdHNN
YXA6Oml0ZXJhdG9yIHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQoc2NyaXB0SWQpOwog
ICAgIGlmIChzY3JpcHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpCkBAIC0zODAsMTQgKzM4
NiwxNiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJv
clN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwogICAgICAgICAqZXJyb3IgPSAiTm8gc2Ny
aXB0IGZvciBpZDogIiArIHNjcmlwdElkOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGRldGFpbHMpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mIGRldGFpbHNSYXcpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChmdW5j
dGlvbklkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAg
ICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+IGRldGFpbHM7CiAgICAgaW5q
ZWN0ZWRTY3JpcHQuZ2V0RnVuY3Rpb25EZXRhaWxzKGVycm9yU3RyaW5nLCBmdW5jdGlvbklkLCAm
ZGV0YWlscyk7CisgICAgZGV0YWlsc1JhdyA9IGRldGFpbHM7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChjb25zdCBTdHJpbmcm
IGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSkKQEAgLTQ3MCwy
NCArNDc4LDI2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2Vw
dGlvbnNJbXBsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywKICAgICAgICAgbV9zdGF0ZS0+c2V0
TG9uZyhEZWJ1Z2dlckFnZW50U3RhdGU6OnBhdXNlT25FeGNlcHRpb25zU3RhdGUsIHBhdXNlU3Rh
dGUpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAs
IGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29u
c3QgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCwgYm9vbCog
d2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3Vw
LCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNv
bnN0IHJldHVybkJ5VmFsdWUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHRSYXcsIGJv
b2wqIHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFt
ZUlkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICpl
cnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIFJlZlB0cjxSZW1vdGVPYmplY3Q+IHJlc3VsdDsKICAgICBpbmplY3RlZFNj
cmlwdC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3RhY2ss
IGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6ICIi
LCBpbmNsdWRlQ29tbWFuZExpbmVBUEkgPyAqaW5jbHVkZUNvbW1hbmRMaW5lQVBJIDogZmFsc2Us
IHJldHVybkJ5VmFsdWUgPyAqcmV0dXJuQnlWYWx1ZSA6IGZhbHNlLCAmcmVzdWx0LCB3YXNUaHJv
d24pOworICAgIHJlc3VsdFJhdyA9IHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JB
cnJheT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQorUGFzc1Jl
ZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4gPiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCiB7CiAgICAgaWYgKCFtX3BhdXNlZFNj
cmlwdFN0YXRlKQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAg
ICAgICByZXR1cm4gQXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVh
dGUoKTsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBp
ZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAg
ICByZXR1cm4gQXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUo
KTsKICAgICB9CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3Vy
cmVudENhbGxTdGFjayk7CiB9CkBAIC01NDAsNyArNTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBT
Y3JpcHQKICAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwg
JmJyZWFrcG9pbnQubGluZU51bWJlcik7CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldE51
bWJlcigiY29sdW1uTnVtYmVyIiwgJmJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKTsKICAgICAgICAg
YnJlYWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKCJjb25kaXRpb24iLCAmYnJlYWtwb2ludC5jb25k
aXRpb24pOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlvbiA9IHJlc29s
dmVCcmVha3BvaW50KGl0LT5maXJzdCwgc2NyaXB0SWQsIGJyZWFrcG9pbnQpOworICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZl
QnJlYWtwb2ludChpdC0+Zmlyc3QsIHNjcmlwdElkLCBicmVha3BvaW50KTsKICAgICAgICAgaWYg
KGxvY2F0aW9uKQogICAgICAgICAgICAgbV9mcm9udGVuZC0+YnJlYWtwb2ludFJlc29sdmVkKGl0
LT5maXJzdCwgbG9jYXRpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGI2NGZlZGM4OTYwY2Y4NmY0NWVlNGIx
ZDlmZGExNGZiNWJlNDNhYWMuLmE2YWJmYTQzNTMwYTI5N2VlZmQ2Mzg2ZThhZGZlMGQ0NTNjM2I5
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNhYmxlKCk7
CiAgICAgYm9vbCBlbmFibGVkKCk7CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBj
dXJyZW50Q2FsbEZyYW1lcygpOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwg
Y29uc3QgU2NyaXB0Jik7CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVy
cm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwpAQCAtMTM5LDcgKzEzOSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zSW1wbChFcnJvclN0cmlu
ZyosIGludCk7CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb2x2ZUJyZWFr
cG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQs
IGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+IHJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtw
b2ludElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7
CiAgICAgdm9pZCBjbGVhcigpOwogICAgIGJvb2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKik7
CiAgICAgdm9pZCBjbGVhckJyZWFrRGV0YWlscygpOwo=
</data>
<flag name="review"
          id="129824"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>