<?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>92743</bug_id>
          
          <creation_ts>2012-07-31 05:25:14 -0700</creation_ts>
          <short_desc>Web Inspector: test native memory instrumentation code with help of unittests</short_desc>
          <delta_ts>2012-08-02 09:31:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92879</dependson>
          <blocked>87262</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>abarth</cc>
    
    <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>682945</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-31 05:25:14 -0700</bug_when>
    <thetext>There is unittests framework in WebKit
It is a part of chromium port.
The instrumentation code is a bit tricky and I want to test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682951</commentid>
    <comment_count>1</comment_count>
      <attachid>155507</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-31 05:36:35 -0700</bug_when>
    <thetext>Created attachment 155507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682959</commentid>
    <comment_count>2</comment_count>
      <attachid>155507</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-31 05:54:41 -0700</bug_when>
    <thetext>Comment on attachment 155507
Patch

Attachment 155507 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13390739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682961</commentid>
    <comment_count>3</comment_count>
      <attachid>155510</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-31 05:57:48 -0700</bug_when>
    <thetext>Created attachment 155510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682970</commentid>
    <comment_count>4</comment_count>
      <attachid>155510</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-07-31 06:09:29 -0700</bug_when>
    <thetext>Comment on attachment 155510
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        was parked as private and addRootObject was introduced instead of it.

typo: parked -&gt; marked

&gt; Source/WebCore/dom/MemoryInstrumentation.h:-57
&gt; -    template &lt;typename T&gt; void addInstrumentedObject(const T&amp; t)

I&apos;d leave the old name as the object may well be referenced by several other objects.

&gt; Source/WebCore/dom/MemoryInstrumentation.h:219
&gt; +    void MemoryInstrumentation::addObjectImpl(const OwnPtr&lt;T&gt;* const&amp; object, ObjectType objectType, OwningType owningType)

Wrong alignment.

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:7
&gt; + * 1.  Redistributions of source code must retain the above copyright

Please use license header like in http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/tests/ClipboardChromiumTest.cpp, it is a bit different.

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:26
&gt; +

No empty line.

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:44
&gt; +    MemoryInstrumentationImpl(VisitedObjects&amp; visitedObjects) : m_visitedObjects(visitedObjects)

This way we have two implementations of MemoryInstrumentation which are almost identical. Let&apos;s move the implementation into MemoryInstrumentation.cpp and add a factory method to MemoryInstrumentation that would create its instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684129</commentid>
    <comment_count>5</comment_count>
      <attachid>155793</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-01 06:08:49 -0700</bug_when>
    <thetext>Created attachment 155793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684136</commentid>
    <comment_count>6</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-01 06:15:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 155510 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=155507&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        was parked as private and addRootObject was introduced instead of it.
&gt; 
&gt; typo: parked -&gt; marked

done

&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:-57
&gt; &gt; -    template &lt;typename T&gt; void addInstrumentedObject(const T&amp; t)
&gt; 
&gt; I&apos;d leave the old name as the object may well be referenced by several other objects.

It is the same situationas in js snapshot. Many objects could have links to the window object but that does not prevent it to be the root object.

&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:219
&gt; &gt; +    void MemoryInstrumentation::addObjectImpl(const OwnPtr&lt;T&gt;* const&amp; object, ObjectType objectType, OwningType owningType)
&gt; 
&gt; Wrong alignment.

done

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:7
&gt; &gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; 
&gt; Please use license header like in http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/tests/ClipboardChromiumTest.cpp, it is a bit different.

done

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:26
&gt; &gt; +
&gt; 
&gt; No empty line.

done

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:44
&gt; &gt; +    MemoryInstrumentationImpl(VisitedObjects&amp; visitedObjects) : m_visitedObjects(visitedObjects)
&gt; 
&gt; This way we have two implementations of MemoryInstrumentation which are almost identical. Let&apos;s move the implementation into MemoryInstrumentation.cpp and add a factory method to MemoryInstrumentation that would create its instance.

landed as r124306</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684154</commentid>
    <comment_count>7</comment_count>
      <attachid>155793</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-01 06:43:19 -0700</bug_when>
    <thetext>Comment on attachment 155793
Patch

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

&gt; Source/WebCore/dom/MemoryInstrumentation.h:59
&gt;          OwningTraits&lt;T&gt;::addInstrumentedObject(this, t);

addInstrumentedObject(this, t)

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:48
&gt; +class MemoryInstrumentationImpl : public MemoryInstrumentation {

Please reuse existing MemoryInstrumentationImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684158</commentid>
    <comment_count>8</comment_count>
      <attachid>155799</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-01 06:49:27 -0700</bug_when>
    <thetext>Created attachment 155799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684175</commentid>
    <comment_count>9</comment_count>
      <attachid>155799</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-01 07:18:56 -0700</bug_when>
    <thetext>Comment on attachment 155799
Patch

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

&gt; Source/WebCore/inspector/MemoryInstrumentationImpl.h:54
&gt; +    size_t reportedSize() const

reportedSizeForAllTypes?

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:46
&gt; +

Please remove 1 blank like

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:85
&gt; +TEST(MemoryInstrumentationTest, ptrVsRef)

Split this into two tests.

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:90
&gt; +        Instrumented* instrumented = new Instrumented;

You may need adoptPtr(new Instrumented).leakPtr() to make some scripts happy.

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:100
&gt; +        impl.addRootObject(instrumented);

If it is a root object, its size shouldn&apos;t be reported yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684182</commentid>
    <comment_count>10</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-01 07:38:22 -0700</bug_when>
    <thetext>Committed r124334: &lt;http://trac.webkit.org/changeset/124334&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684267</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 10:09:29 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 92879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685009</commentid>
    <comment_count>12</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-01 23:32:50 -0700</bug_when>
    <thetext>Committed r124412: &lt;http://trac.webkit.org/changeset/124412&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155507</attachid>
            <date>2012-07-31 05:36:35 -0700</date>
            <delta_ts>2012-07-31 05:57:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92743-20120731163618.patch</filename>
            <type>text/plain</type>
            <size>17131</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFmZTFhOWZjZDAzZTY0
MDUwY2M3YmE2MWEwMTZlZjJkMDViOTBjYy4uOTdmNGZiYjUyNGNmODhkYjAzZjc2YzU2YjU0YWU1
MWM5ZTQ2ODQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTMxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB0ZXN0IG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGNvZGUgd2l0aCBoZWxwIG9m
IHVuaXR0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTI3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0IGEgcGFydCBvZiBleGlzdGluZyBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBj
b2RlIHdpdGggaGVscCBvZiB1bml0IHRlc3RzLgorICAgICAgICA2IHRlc3RzIHdlcmUgYWRkZWQg
YW5kIHR3byBidWdzIHdlcmUgZml4ZWQuCisgICAgICAgIGEgZHJpdmUtYnkgaW1wcm92ZW1lbnQ6
IHRoZSBtZXRob2QgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3QK
KyAgICAgICAgd2FzIHBhcmtlZCBhcyBwcml2YXRlIGFuZCBhZGRSb290T2JqZWN0IHdhcyBpbnRy
b2R1Y2VkIGluc3RlYWQgb2YgaXQuCisgICAgICAgIFRoZSBuZXcgZnVuY3Rpb24gYWxzbyBjYWxs
cyBwcm9jZXNzRGVmZXJlZFBvaW50ZXJzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
UHJvZmlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RC
aW5kaW5nTWVtb3J5SW5mbyk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRSb290T2JqZWN0
KToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZE9iamVjdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0zMSAgVG9tbXkgV2lk
ZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgYSBtaW5p
bWFsIFJUQ1BlZXJDb25uZWN0aW9uIHRvZ2V0aGVyIHdpdGggRGljdGlvbmFyeSBjaGFuZ2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDVkMDc4MTdmMGMxZDJiZDliM2E1MGE4MTczODg3
NzZmZmI5MmEzNTMuLjE3OGVlZWIyYjM5YjI0ODU1OGY3MGI3ZTRmZjY3ZTI5YWZhOTQyMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDctMzEgIEls
eWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHRlc3QgbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb24gY29kZSB3aXRoIGhlbHAg
b2YgdW5pdHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05Mjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3QgYSBwYXJ0IG9mIGV4aXN0aW5nIE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9u
IGNvZGUgd2l0aCBoZWxwIG9mIHVuaXQgdGVzdHMuCisgICAgICAgIDYgdGVzdHMgd2VyZSBhZGRl
ZCBhbmQgdHdvIGJ1Z3Mgd2VyZSBmaXhlZC4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAg
ICAgICAqIHRlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpNZW1vcnlJbnN0cnVtZW50
YXRpb25JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6
OnByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OnJlcG9ydGVkU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpjb3VudE9iamVjdFNpemUpOgorICAgICAg
ICAoTm90SW5zdHJ1bWVudGVkKToKKyAgICAgICAgKEluc3RydW1lbnRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnN0cnVtZW50ZWQ6Okluc3RydW1lbnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnN0cnVtZW50ZWQ6On5JbnN0cnVtZW50ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVu
dGVkOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAg
ICAgKEluc3RydW1lbnRlZFdpdGhPd25QdHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVu
dGVkV2l0aE93blB0cjo6SW5zdHJ1bWVudGVkV2l0aE93blB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnN0cnVtZW50ZWRXaXRoT3duUHRyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisKIDIwMTItMDct
MzEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjQxNzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKaW5kZXggMWViZTkxZWIxNDdjMWExYzU1NjZhMGM4
ZmU2OTdlZjc5ZmE3YmRhOC4uMTNjYWQzMzgzNDNhMmRkMTkzZTcwYjY5ZmUzMjJmOTdkY2Y2NjU4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApA
QCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgU2NyaXB0UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxBcnJh
eXMoRXh0ZXJuYWxBcnJheVZpc2l0b3IqIHZpc2l0b3IpCiB2b2lkIFNjcmlwdFByb2ZpbGVyOjpj
b2xsZWN0QmluZGluZ01lbW9yeUluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50
YXRpb24pCiB7CiAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwotICAgIGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1
bWVudGVkT2JqZWN0KGRhdGEpOworICAgIGluc3RydW1lbnRhdGlvbi0+YWRkUm9vdE9iamVjdChk
YXRhKTsKIH0KIAogc2l6ZV90IFNjcmlwdFByb2ZpbGVyOjpwcm9maWxlclNuYXBzaG90c1NpemUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IGNjZGFm
MThkNzIzYzliYTQ0ZGM0Nzc4NzhkYjNiNTI1NjhhYWJmMmUuLjBlMTM5ZTBkM2EyM2NkZDIyNjI5
NWNhYWEzZmYwNWFhMjk3ZjRjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1v
cnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTU0LDkgKzU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgTGFzdFR5cGVF
bnRyeQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVt
ZW50ZWRPYmplY3QoY29uc3QgVCYgdCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBh
ZGRSb290T2JqZWN0KGNvbnN0IFQmIHQpCiAgICAgewogICAgICAgICBPd25pbmdUcmFpdHM8VD46
OmFkZEluc3RydW1lbnRlZE9iamVjdCh0aGlzLCB0KTsKKyAgICAgICAgcHJvY2Vzc0RlZmVycmVk
SW5zdHJ1bWVudGVkUG9pbnRlcnMoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29udGFpbmVyPiBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29u
dGFpbmVyJiwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKQEAgLTY4LDExICs2OSwxMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRh
dGlvbiopID0gMDsKICAgICB9OwogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb3VudE9i
amVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlZmVy
SW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCkgPSAwOwogCi1w
cml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgTWVtb3J5Q2xh
c3NJbmZvOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBJbnN0cnVtZW50ZWRQb2lu
dGVyIDogcHVibGljIEluc3RydW1lbnRlZFBvaW50ZXJCYXNlIHsKICAgICBwdWJsaWM6CkBAIC04
OCw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkT2JqZWN0
KHRoaXMsIHQsIG9iamVjdFR5cGUpOwogICAgIH0KICAgICB2b2lkIGFkZFN0cmluZyhjb25zdCBT
dHJpbmcmLCBPYmplY3RUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJ
bnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgdCkgeyBPd25pbmdUcmFpdHM8VD46OmFkZEluc3Ry
dW1lbnRlZE9iamVjdCh0aGlzLCB0KTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFw
VHlwZT4gdm9pZCBhZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiwgT2JqZWN0VHlwZSwgYm9v
bCBjb250ZW50T25seSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5
cGU+IHZvaWQgYWRkSGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wg
Y29udGVudE9ubHkgPSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25U
eXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUm
LCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwpAQCAtMTIyLDYgKzEyNSw4
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgT3duaW5nVHlwZSk7CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0
JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZv
aWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3du
aW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChj
b25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7CiB9OwogCiBj
bGFzcyBNZW1vcnlPYmplY3RJbmZvIHsKQEAgLTIwMSwxMyArMjA2LDI1IEBAIHZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0
JiBvYmplY3QsIE93CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3Qm
IG9iamVjdCwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQogewotICAgIGFkZEluc3RydW1lbnRlZE9i
amVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duaW5nVHlwZSk7CisgICAgYWRkSW5zdHJ1bWVudGVk
T2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBieVBvaW50ZXIpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgT3duaW5nVHlwZSBvd25pbmdU
eXBlKQogewotICAgIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3du
aW5nVHlwZSk7CisgICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBi
eVBvaW50ZXIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmpl
Y3QsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQoreworICAg
IGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb2JqZWN0VHlwZSwgYnlQb2ludGVyKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
T2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUgb2Jq
ZWN0VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQoreworICAgIGFkZE9iamVjdEltcGwob2Jq
ZWN0LT5nZXQoKSwgb2JqZWN0VHlwZSwgYnlQb2ludGVyKTsKIH0KIAogLy8gTGluayB0aW1lIGd1
YXJkIGZvciBzdHJpbmcgbWVtYmVycy4gVGhleSBwcm9kdWNlIGxpbmsgZXJyb3IgaXMgYSBzdHJp
bmcgaXMgcmVwb3J0ZWQgdmlhIGFkZE9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDEzYzA4MWU4NmExZjQyNjI5YTg5
MzM4NzIwZmM0MWI1NzQxYjNmYzIuLmI5MWE2NDI2ZDE3YjM1ZGFiOWFkOWYyNDFhZmZjNDE5MDQw
OTYzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmNwcApAQCAtNDc1LDE1ICs0NzUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBk
b20ucmVsZWFzZSgpOwogICAgIH0KIAotICAgIHZvaWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVu
dGVkUG9pbnRlcnMoKQotICAgIHsKLSAgICAgICAgd2hpbGUgKCFtX2RlZmVycmVkSW5zdHJ1bWVu
dGVkUG9pbnRlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBPd25QdHI8SW5zdHJ1bWVudGVk
UG9pbnRlckJhc2U+IHBvaW50ZXIgPSBtX2RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMubGFz
dCgpLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVy
cy5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBwb2ludGVyLT5wcm9jZXNzKHRoaXMpOwotICAg
ICAgICB9Ci0gICAgfQotCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNp
emUoT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkgT1ZFUlJJREUKICAgICB7CkBA
IC01MDEsNiArNDkyLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAhbV92aXNpdGVkT2Jq
ZWN0cy5hZGQob2JqZWN0KS5pc05ld0VudHJ5OwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpCisgICAgeworICAgICAgICB3aGls
ZSAoIW1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIE93blB0cjxJbnN0cnVtZW50ZWRQb2ludGVyQmFzZT4gcG9pbnRlciA9IG1fZGVmZXJyZWRJ
bnN0cnVtZW50ZWRQb2ludGVycy5sYXN0KCkucmVsZWFzZSgpOworICAgICAgICAgICAgbV9kZWZl
cnJlZEluc3RydW1lbnRlZFBvaW50ZXJzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIHBvaW50
ZXItPnByb2Nlc3ModGhpcyk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBzaXplX3QgbV90b3Rh
bFNpemVzW0xhc3RUeXBlRW50cnldOwogICAgIFZpc2l0ZWRPYmplY3RzJiBtX3Zpc2l0ZWRPYmpl
Y3RzOwogICAgIFZlY3RvcjxPd25QdHI8SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U+ID4gbV9kZWZl
cnJlZEluc3RydW1lbnRlZFBvaW50ZXJzOwpAQCAtNTE5LDIwICs1MTksMTcgQEAgcHVibGljOgog
ICAgICAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKSAmJiBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgp
ICYmIG1fcGFnZSAhPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5hZGRJbnN0cnVtZW50ZWRP
YmplY3Qobm9kZSk7Ci0gICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UucHJvY2Vzc0RlZmVycmVkSW5z
dHJ1bWVudGVkUG9pbnRlcnMoKTsKKyAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5hZGRSb290T2Jq
ZWN0KG5vZGUpOwogICAgIH0KIAogICAgIHZvaWQgdmlzaXRGcmFtZShGcmFtZSogZnJhbWUpCiAg
ICAgewotICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLmFkZEluc3RydW1lbnRlZE9iamVjdChmcmFt
ZSk7Ci0gICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UucHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVk
UG9pbnRlcnMoKTsKKyAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5hZGRSb290T2JqZWN0KGZyYW1l
KTsKICAgICB9CiAKICAgICB2b2lkIHZpc2l0QmluZGluZ3MoKQogICAgIHsKICAgICAgICAgU2Ny
aXB0UHJvZmlsZXI6OmNvbGxlY3RCaW5kaW5nTWVtb3J5SW5mbygmbV9kb21NZW1vcnlVc2FnZSk7
Ci0gICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UucHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9p
bnRlcnMoKTsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBk
dW1wU3RhdGlzdGljcyhJbnNwZWN0b3JEYXRhQ291bnRlciogaW5zcGVjdG9yRGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IGI1MDcxODlkYjgzMzAyNWMyZjAzNDg0ZDM2YjQ0
NTJmYThlZGMyNzUuLjYxYTM3NzIxYzNmNWIyNDFjNGYyNjhjNmVmY2NjNjg3MzYxZjBkNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTI2LDYgKzEyNiw3IEBACiAgICAgICAg
ICAgICAndGVzdHMvTG9jYWxpemVkRGF0ZUlDVVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9Mb2NhbGl6ZWROdW1iZXJJQ1VUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvTWVtb3J5
SW5mby5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgnLAogICAgICAgICAg
ICAgJ3Rlc3RzL09wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL09wZW5UeXBlVmVydGljYWxEYXRhVGVzdC5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRp
b25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ5ZTZmNzZlMzA2OWIzZmExNmIzZWI2MWRjNjlj
ZTQ4Zjk3NmJkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK3R5
cGVkZWYgSGFzaFNldDxjb25zdCB2b2lkKj4gVmlzaXRlZE9iamVjdHM7CisKK2NsYXNzIE1lbW9y
eUluc3RydW1lbnRhdGlvbkltcGwgOiBwdWJsaWMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsKK3B1
YmxpYzoKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsKFZpc2l0ZWRPYmplY3RzJiB2aXNp
dGVkT2JqZWN0cykgOiBtX3Zpc2l0ZWRPYmplY3RzKHZpc2l0ZWRPYmplY3RzKQorICAgIHsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBMYXN0VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAg
ICBtX3RvdGFsU2l6ZXNbaV0gPSAwOworICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0RlZmVycmVk
SW5zdHJ1bWVudGVkUG9pbnRlcnMoKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCFtX2RlZmVycmVk
SW5zdHJ1bWVudGVkUG9pbnRlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBPd25QdHI8SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2U+IHBvaW50ZXIgPSBtX2RlZmVycmVkSW5zdHJ1bWVudGVkUG9p
bnRlcnMubGFzdCgpLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1fZGVmZXJyZWRJbnN0cnVtZW50
ZWRQb2ludGVycy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBwb2ludGVyLT5wcm9jZXNzKHRo
aXMpOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZV90IHJlcG9ydGVkU2l6ZSgpIGNvbnN0
CisgICAgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgTGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICAgICAgc2l6ZSArPSBtX3RvdGFsU2l6
ZXNbaV07CisgICAgICAgIHJldHVybiBzaXplOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIHZvaWQgY291bnRPYmplY3RTaXplKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6
T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChvYmplY3RUeXBlID49IDAgJiYgb2JqZWN0VHlwZSA8IExhc3RUeXBlRW50cnkpOworICAgICAg
ICBtX3RvdGFsU2l6ZXNbb2JqZWN0VHlwZV0gKz0gc2l6ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1bWVudGVkUG9p
bnRlckJhc2U+IHBvaW50ZXIpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2RlZmVycmVkSW5z
dHJ1bWVudGVkUG9pbnRlcnMuYXBwZW5kKHBvaW50ZXIpOworICAgIH0KKworICAgIHZpcnR1YWwg
Ym9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqIG9iamVjdCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAg
IHJldHVybiAhbV92aXNpdGVkT2JqZWN0cy5hZGQob2JqZWN0KS5pc05ld0VudHJ5OworICAgIH0K
KworICAgIHNpemVfdCBtX3RvdGFsU2l6ZXNbTGFzdFR5cGVFbnRyeV07CisgICAgVmlzaXRlZE9i
amVjdHMmIG1fdmlzaXRlZE9iamVjdHM7CisgICAgVmVjdG9yPE93blB0cjxJbnN0cnVtZW50ZWRQ
b2ludGVyQmFzZT4gPiBtX2RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnM7Cit9OworCitjbGFz
cyBOb3RJbnN0cnVtZW50ZWQgeworcHVibGljOgorICAgIGNoYXIgbV9kYXRhWzQyXTsKK307CisK
K2NsYXNzIEluc3RydW1lbnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RydW1lbnRlZD4gewor
cHVibGljOgorICAgIEluc3RydW1lbnRlZCgpIDogbV9ub3RJbnN0cnVtZW50ZWQobmV3IE5vdElu
c3RydW1lbnRlZCkgeyB9CisgICAgdmlydHVhbCB+SW5zdHJ1bWVudGVkKCkgeyBkZWxldGUgbV9u
b3RJbnN0cnVtZW50ZWQ7IH0KKworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAg
TWVtb3J5Q2xhc3NJbmZvPEluc3RydW1lbnRlZD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1f
bm90SW5zdHJ1bWVudGVkKTsKKyAgICB9CisgICAgTm90SW5zdHJ1bWVudGVkKiBtX25vdEluc3Ry
dW1lbnRlZDsKK307CisKK1RFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgc2l6ZU9mKQor
eworICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0ZWRPYmplY3RzOworICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2JqZWN0cyk7CisgICAgSW5zdHJ1bWVudGVkIGluc3Ry
dW1lbnRlZDsKKyAgICBpbXBsLmFkZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKKyAgICBFWFBF
Q1RfRVEoc2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGltcGwucmVwb3J0ZWRTaXplKCkpOworICAg
IEVYUEVDVF9FUSgyLCB2aXNpdGVkT2JqZWN0cy5zaXplKCkpOworfQorCitURVNUKE1lbW9yeUlu
c3RydW1lbnRhdGlvblRlc3QsIG51bGxDaGVjaykKK3sKKyAgICBWaXNpdGVkT2JqZWN0cyB2aXNp
dGVkT2JqZWN0czsKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIGltcGwodmlzaXRlZE9i
amVjdHMpOworICAgIEluc3RydW1lbnRlZCogaW5zdHJ1bWVudGVkID0gMDsKKyAgICBpbXBsLmFk
ZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKKyAgICBFWFBFQ1RfRVEoMHUsIGltcGwucmVwb3J0
ZWRTaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCB2aXNpdGVkT2JqZWN0cy5zaXplKCkpOworfQor
CitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHB0clZzUmVmKQoreworICAgIHsKKyAg
ICAgICAgVmlzaXRlZE9iamVjdHMgdmlzaXRlZE9iamVjdHM7CisgICAgICAgIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2JqZWN0cyk7CisgICAgICAgIEluc3RydW1lbnRl
ZCogaW5zdHJ1bWVudGVkID0gbmV3IEluc3RydW1lbnRlZDsKKyAgICAgICAgaW1wbC5hZGRSb290
T2JqZWN0KGluc3RydW1lbnRlZCk7CisgICAgICAgIGRlbGV0ZSBpbnN0cnVtZW50ZWQ7CisgICAg
ICAgIEVYUEVDVF9FUShzaXplb2YoSW5zdHJ1bWVudGVkKSArIHNpemVvZihOb3RJbnN0cnVtZW50
ZWQpLCBpbXBsLnJlcG9ydGVkU2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDIsIHZpc2l0ZWRP
YmplY3RzLnNpemUoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgVmlzaXRlZE9iamVjdHMgdmlz
aXRlZE9iamVjdHM7CisgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgaW1wbCh2aXNp
dGVkT2JqZWN0cyk7CisgICAgICAgIEluc3RydW1lbnRlZCBpbnN0cnVtZW50ZWQ7CisgICAgICAg
IGltcGwuYWRkUm9vdE9iamVjdChpbnN0cnVtZW50ZWQpOworICAgICAgICBFWFBFQ1RfRVEoc2l6
ZW9mKE5vdEluc3RydW1lbnRlZCksIGltcGwucmVwb3J0ZWRTaXplKCkpOworICAgICAgICBFWFBF
Q1RfRVEoMiwgdmlzaXRlZE9iamVjdHMuc2l6ZSgpKTsKKyAgICB9Cit9CisKK1RFU1QoTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVGVzdCwgb3duUHRyKQoreworICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0
ZWRPYmplY3RzOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2Jq
ZWN0cyk7CisgICAgT3duUHRyPEluc3RydW1lbnRlZD4gaW5zdHJ1bWVudGVkKGFkb3B0UHRyKG5l
dyBJbnN0cnVtZW50ZWQpKTsKKyAgICBpbXBsLmFkZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsK
KyAgICBFWFBFQ1RfRVEoc2l6ZW9mKEluc3RydW1lbnRlZCkgKyBzaXplb2YoTm90SW5zdHJ1bWVu
dGVkKSwgaW1wbC5yZXBvcnRlZFNpemUoKSk7CisgICAgRVhQRUNUX0VRKDIsIHZpc2l0ZWRPYmpl
Y3RzLnNpemUoKSk7Cit9CisKK1RFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgcmVmUHRy
KQoreworICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0ZWRPYmplY3RzOworICAgIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2JqZWN0cyk7CisgICAgUmVmUHRyPEluc3RydW1l
bnRlZD4gaW5zdHJ1bWVudGVkKGFkb3B0UmVmKG5ldyBJbnN0cnVtZW50ZWQpKTsKKyAgICBpbXBs
LmFkZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKEluc3Ry
dW1lbnRlZCkgKyBzaXplb2YoTm90SW5zdHJ1bWVudGVkKSwgaW1wbC5yZXBvcnRlZFNpemUoKSk7
CisgICAgRVhQRUNUX0VRKDIsIHZpc2l0ZWRPYmplY3RzLnNpemUoKSk7Cit9CisKK2NsYXNzIElu
c3RydW1lbnRlZFdpdGhPd25QdHIgOiBwdWJsaWMgSW5zdHJ1bWVudGVkIHsKK3B1YmxpYzoKKyAg
ICBJbnN0cnVtZW50ZWRXaXRoT3duUHRyKCkgOiBtX25vdEluc3RydW1lbnRlZE93blB0cihhZG9w
dFB0cihuZXcgTm90SW5zdHJ1bWVudGVkKSkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKKyAg
ICB7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxJbnN0cnVtZW50ZWRXaXRoT3duUHRyPiBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAg
ICAgICAgaW5mby52aXNpdEJhc2VDbGFzczxJbnN0cnVtZW50ZWQ+KHRoaXMpOworICAgICAgICBp
bmZvLmFkZE1lbWJlcihtX25vdEluc3RydW1lbnRlZE93blB0cik7CisgICAgfQorICAgIE93blB0
cjxOb3RJbnN0cnVtZW50ZWQ+IG1fbm90SW5zdHJ1bWVudGVkT3duUHRyOworfTsKKworVEVTVChN
ZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBvd25QdHJOb3RJbnN0cnVtZW50ZWQpCit7CisgICAg
VmlzaXRlZE9iamVjdHMgdmlzaXRlZE9iamVjdHM7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbCBpbXBsKHZpc2l0ZWRPYmplY3RzKTsKKyAgICBJbnN0cnVtZW50ZWRXaXRoT3duUHRyIGlu
c3RydW1lbnRlZFdpdGhPd25QdHI7CisgICAgaW1wbC5hZGRSb290T2JqZWN0KGluc3RydW1lbnRl
ZFdpdGhPd25QdHIpOworICAgIEVYUEVDVF9FUSgyICogc2l6ZW9mKE5vdEluc3RydW1lbnRlZCks
IGltcGwucmVwb3J0ZWRTaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCB2aXNpdGVkT2JqZWN0cy5z
aXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155510</attachid>
            <date>2012-07-31 05:57:48 -0700</date>
            <delta_ts>2012-08-01 06:08:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92743-20120731165731.patch</filename>
            <type>text/plain</type>
            <size>17312</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFmZTFhOWZjZDAzZTY0
MDUwY2M3YmE2MWEwMTZlZjJkMDViOTBjYy4uOTdmNGZiYjUyNGNmODhkYjAzZjc2YzU2YjU0YWU1
MWM5ZTQ2ODQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTMxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB0ZXN0IG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGNvZGUgd2l0aCBoZWxwIG9m
IHVuaXR0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTI3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0IGEgcGFydCBvZiBleGlzdGluZyBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBj
b2RlIHdpdGggaGVscCBvZiB1bml0IHRlc3RzLgorICAgICAgICA2IHRlc3RzIHdlcmUgYWRkZWQg
YW5kIHR3byBidWdzIHdlcmUgZml4ZWQuCisgICAgICAgIGEgZHJpdmUtYnkgaW1wcm92ZW1lbnQ6
IHRoZSBtZXRob2QgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3QK
KyAgICAgICAgd2FzIHBhcmtlZCBhcyBwcml2YXRlIGFuZCBhZGRSb290T2JqZWN0IHdhcyBpbnRy
b2R1Y2VkIGluc3RlYWQgb2YgaXQuCisgICAgICAgIFRoZSBuZXcgZnVuY3Rpb24gYWxzbyBjYWxs
cyBwcm9jZXNzRGVmZXJlZFBvaW50ZXJzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
UHJvZmlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RC
aW5kaW5nTWVtb3J5SW5mbyk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRSb290T2JqZWN0
KToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZE9iamVjdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0zMSAgVG9tbXkgV2lk
ZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgYSBtaW5p
bWFsIFJUQ1BlZXJDb25uZWN0aW9uIHRvZ2V0aGVyIHdpdGggRGljdGlvbmFyeSBjaGFuZ2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDVkMDc4MTdmMGMxZDJiZDliM2E1MGE4MTczODg3
NzZmZmI5MmEzNTMuLjE3OGVlZWIyYjM5YjI0ODU1OGY3MGI3ZTRmZjY3ZTI5YWZhOTQyMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDctMzEgIEls
eWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHRlc3QgbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb24gY29kZSB3aXRoIGhlbHAg
b2YgdW5pdHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05Mjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3QgYSBwYXJ0IG9mIGV4aXN0aW5nIE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9u
IGNvZGUgd2l0aCBoZWxwIG9mIHVuaXQgdGVzdHMuCisgICAgICAgIDYgdGVzdHMgd2VyZSBhZGRl
ZCBhbmQgdHdvIGJ1Z3Mgd2VyZSBmaXhlZC4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAg
ICAgICAqIHRlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpNZW1vcnlJbnN0cnVtZW50
YXRpb25JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6
OnByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OnJlcG9ydGVkU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpjb3VudE9iamVjdFNpemUpOgorICAgICAg
ICAoTm90SW5zdHJ1bWVudGVkKToKKyAgICAgICAgKEluc3RydW1lbnRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnN0cnVtZW50ZWQ6Okluc3RydW1lbnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnN0cnVtZW50ZWQ6On5JbnN0cnVtZW50ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVu
dGVkOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAg
ICAgKEluc3RydW1lbnRlZFdpdGhPd25QdHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVu
dGVkV2l0aE93blB0cjo6SW5zdHJ1bWVudGVkV2l0aE93blB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnN0cnVtZW50ZWRXaXRoT3duUHRyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisKIDIwMTItMDct
MzEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjQxNzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKaW5kZXggMWViZTkxZWIxNDdjMWExYzU1NjZhMGM4
ZmU2OTdlZjc5ZmE3YmRhOC4uMTNjYWQzMzgzNDNhMmRkMTkzZTcwYjY5ZmUzMjJmOTdkY2Y2NjU4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApA
QCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgU2NyaXB0UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxBcnJh
eXMoRXh0ZXJuYWxBcnJheVZpc2l0b3IqIHZpc2l0b3IpCiB2b2lkIFNjcmlwdFByb2ZpbGVyOjpj
b2xsZWN0QmluZGluZ01lbW9yeUluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50
YXRpb24pCiB7CiAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwotICAgIGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1
bWVudGVkT2JqZWN0KGRhdGEpOworICAgIGluc3RydW1lbnRhdGlvbi0+YWRkUm9vdE9iamVjdChk
YXRhKTsKIH0KIAogc2l6ZV90IFNjcmlwdFByb2ZpbGVyOjpwcm9maWxlclNuYXBzaG90c1NpemUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IGNjZGFm
MThkNzIzYzliYTQ0ZGM0Nzc4NzhkYjNiNTI1NjhhYWJmMmUuLjA2YTNiYmQ0ODExZWU4MGE1ZTVl
NGUyYThiZGUwYzdmOThlNWNkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1v
cnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTU0LDkgKzU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgTGFzdFR5cGVF
bnRyeQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVt
ZW50ZWRPYmplY3QoY29uc3QgVCYgdCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBh
ZGRSb290T2JqZWN0KGNvbnN0IFQmIHQpCiAgICAgewogICAgICAgICBPd25pbmdUcmFpdHM8VD46
OmFkZEluc3RydW1lbnRlZE9iamVjdCh0aGlzLCB0KTsKKyAgICAgICAgcHJvY2Vzc0RlZmVycmVk
SW5zdHJ1bWVudGVkUG9pbnRlcnMoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29udGFpbmVyPiBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29u
dGFpbmVyJiwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKQEAgLTY4LDExICs2OSwxMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRh
dGlvbiopID0gMDsKICAgICB9OwogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb3VudE9i
amVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlZmVy
SW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCkgPSAwOwogCi1w
cml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgTWVtb3J5Q2xh
c3NJbmZvOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBJbnN0cnVtZW50ZWRQb2lu
dGVyIDogcHVibGljIEluc3RydW1lbnRlZFBvaW50ZXJCYXNlIHsKICAgICBwdWJsaWM6CkBAIC04
OCw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkT2JqZWN0
KHRoaXMsIHQsIG9iamVjdFR5cGUpOwogICAgIH0KICAgICB2b2lkIGFkZFN0cmluZyhjb25zdCBT
dHJpbmcmLCBPYmplY3RUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJ
bnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgdCkgeyBPd25pbmdUcmFpdHM8VD46OmFkZEluc3Ry
dW1lbnRlZE9iamVjdCh0aGlzLCB0KTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFw
VHlwZT4gdm9pZCBhZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiwgT2JqZWN0VHlwZSwgYm9v
bCBjb250ZW50T25seSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5
cGU+IHZvaWQgYWRkSGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wg
Y29udGVudE9ubHkgPSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25U
eXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUm
LCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwpAQCAtMTIyLDYgKzEyNSw4
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgT3duaW5nVHlwZSk7CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0
JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZv
aWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3du
aW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChj
b25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7CiB9OwogCiBj
bGFzcyBNZW1vcnlPYmplY3RJbmZvIHsKQEAgLTE5OSwxNSArMjA0LDI3IEBAIHZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0
JiBvYmplY3QsIE93CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBj
b25zdCYgb2JqZWN0LCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCit2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0
JiBvYmplY3QsIE93bmluZ1R5cGUpCit7CisgICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChv
YmplY3QtPmdldCgpLCBieVBvaW50ZXIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3Zv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0
IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgT3duaW5nVHlwZSkKK3sKKyAgICBhZGRJbnN0cnVt
ZW50ZWRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIGJ5UG9pbnRlcik7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJ
bXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvYmplY3RUeXBl
LCBPd25pbmdUeXBlKQogewotICAgIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwob2JqZWN0LT5n
ZXQoKSwgb3duaW5nVHlwZSk7CisgICAgYWRkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBvYmpl
Y3RUeXBlLCBieVBvaW50ZXIpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJlZlB0
cjxUPiogY29uc3QmIG9iamVjdCwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJ
bnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2Jq
ZWN0LCBPYmplY3RUeXBlIG9iamVjdFR5cGUsIE93bmluZ1R5cGUpCiB7Ci0gICAgYWRkSW5zdHJ1
bWVudGVkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBvd25pbmdUeXBlKTsKKyAgICBhZGRPYmpl
Y3RJbXBsKG9iamVjdC0+Z2V0KCksIG9iamVjdFR5cGUsIGJ5UG9pbnRlcik7CiB9CiAKIC8vIExp
bmsgdGltZSBndWFyZCBmb3Igc3RyaW5nIG1lbWJlcnMuIFRoZXkgcHJvZHVjZSBsaW5rIGVycm9y
IGlzIGEgc3RyaW5nIGlzIHJlcG9ydGVkIHZpYSBhZGRPYmplY3QuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAxM2MwODFlODZh
MWY0MjYyOWE4OTMzODcyMGZjNDFiNTc0MWIzZmMyLi5iOTFhNjQyNmQxN2IzNWRhYjlhZDlmMjQx
YWZmYzQxOTA0MDk2M2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQ3NSwxNSArNDc1LDYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gZG9tLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICB2b2lkIHByb2Nlc3NEZWZlcnJl
ZEluc3RydW1lbnRlZFBvaW50ZXJzKCkKLSAgICB7Ci0gICAgICAgIHdoaWxlICghbV9kZWZlcnJl
ZEluc3RydW1lbnRlZFBvaW50ZXJzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgT3duUHRyPElu
c3RydW1lbnRlZFBvaW50ZXJCYXNlPiBwb2ludGVyID0gbV9kZWZlcnJlZEluc3RydW1lbnRlZFBv
aW50ZXJzLmxhc3QoKS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBtX2RlZmVycmVkSW5zdHJ1bWVu
dGVkUG9pbnRlcnMucmVtb3ZlTGFzdCgpOwotICAgICAgICAgICAgcG9pbnRlci0+cHJvY2Vzcyh0
aGlzKTsKLSAgICAgICAgfQotICAgIH0KLQogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY291
bnRPYmplY3RTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpIE9WRVJSSURF
CiAgICAgewpAQCAtNTAxLDYgKzQ5MiwxNSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gIW1f
dmlzaXRlZE9iamVjdHMuYWRkKG9iamVjdCkuaXNOZXdFbnRyeTsKICAgICB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKQorICAgIHsKKyAg
ICAgICAgd2hpbGUgKCFtX2RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBPd25QdHI8SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U+IHBvaW50ZXIgPSBt
X2RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMubGFzdCgpLnJlbGVhc2UoKTsKKyAgICAgICAg
ICAgIG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycy5yZW1vdmVMYXN0KCk7CisgICAgICAg
ICAgICBwb2ludGVyLT5wcm9jZXNzKHRoaXMpOworICAgICAgICB9CisgICAgfQorCiAgICAgc2l6
ZV90IG1fdG90YWxTaXplc1tMYXN0VHlwZUVudHJ5XTsKICAgICBWaXNpdGVkT2JqZWN0cyYgbV92
aXNpdGVkT2JqZWN0czsKICAgICBWZWN0b3I8T3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNl
PiA+IG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVyczsKQEAgLTUxOSwyMCArNTE5LDE3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKG5vZGUtPmRvY3VtZW50KCkgJiYgbm9kZS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSAmJiBtX3BhZ2UgIT0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UuYWRkSW5z
dHJ1bWVudGVkT2JqZWN0KG5vZGUpOwotICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnByb2Nlc3NE
ZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCk7CisgICAgICAgIG1fZG9tTWVtb3J5VXNhZ2Uu
YWRkUm9vdE9iamVjdChub2RlKTsKICAgICB9CiAKICAgICB2b2lkIHZpc2l0RnJhbWUoRnJhbWUq
IGZyYW1lKQogICAgIHsKLSAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5hZGRJbnN0cnVtZW50ZWRP
YmplY3QoZnJhbWUpOwotICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCk7CisgICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UuYWRkUm9vdE9i
amVjdChmcmFtZSk7CiAgICAgfQogCiAgICAgdm9pZCB2aXNpdEJpbmRpbmdzKCkKICAgICB7CiAg
ICAgICAgIFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0QmluZGluZ01lbW9yeUluZm8oJm1fZG9tTWVt
b3J5VXNhZ2UpOwotICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnByb2Nlc3NEZWZlcnJlZEluc3Ry
dW1lbnRlZFBvaW50ZXJzKCk7CiAgICAgfQogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4gZHVtcFN0YXRpc3RpY3MoSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3BlY3RvckRh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBiNTA3MTg5ZGI4MzMwMjVjMmYw
MzQ4NGQzNmI0NDUyZmE4ZWRjMjc1Li42MWEzNzcyMWMzZjViMjQxYzRmMjY4YzZlZmNjYzY4NzM2
MWYwZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEyNiw2ICsxMjYsNyBA
QAogICAgICAgICAgICAgJ3Rlc3RzL0xvY2FsaXplZERhdGVJQ1VUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvTG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL01lbW9yeUluZm8uY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9NZW1vcnlJbnN0cnVtZW50
YXRpb25UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oJywK
ICAgICAgICAgICAgICd0ZXN0cy9PcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0
ZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9PcGVuVHlwZVZlcnRpY2FsRGF0YVRlc3Qu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01lbW9y
eUluc3RydW1lbnRhdGlvblRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0OWU2Zjc2ZTMwNjliM2ZhMTZi
M2ViNjFkYzY5Y2U0OGY5NzZiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCkBAIC0wLDAgKzEsMTky
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgeworCit0eXBlZGVmIEhhc2hTZXQ8Y29uc3Qgdm9pZCo+IFZpc2l0ZWRPYmplY3RzOworCitj
bGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIDogcHVibGljIE1lbW9yeUluc3RydW1lbnRh
dGlvbiB7CitwdWJsaWM6CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbChWaXNpdGVkT2Jq
ZWN0cyYgdmlzaXRlZE9iamVjdHMpIDogbV92aXNpdGVkT2JqZWN0cyh2aXNpdGVkT2JqZWN0cykK
KyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTGFzdFR5cGVFbnRyeTsgKytpKQor
ICAgICAgICAgICAgbV90b3RhbFNpemVzW2ldID0gMDsKKyAgICB9CisKKyAgICB2b2lkIHByb2Nl
c3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCkKKyAgICB7CisgICAgICAgIHdoaWxlICgh
bV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
T3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPiBwb2ludGVyID0gbV9kZWZlcnJlZEluc3Ry
dW1lbnRlZFBvaW50ZXJzLmxhc3QoKS5yZWxlYXNlKCk7CisgICAgICAgICAgICBtX2RlZmVycmVk
SW5zdHJ1bWVudGVkUG9pbnRlcnMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgcG9pbnRlci0+
cHJvY2Vzcyh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNpemVfdCByZXBvcnRlZFNp
emUoKSBjb25zdAorICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSAwOworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IExhc3RUeXBlRW50cnk7ICsraSkKKyAgICAgICAgICAgIHNpemUgKz0g
bV90b3RhbFNpemVzW2ldOworICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShXZWJDb3JlOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCisgICAgeworICAg
ICAgICBBU1NFUlQob2JqZWN0VHlwZSA+PSAwICYmIG9iamVjdFR5cGUgPCBMYXN0VHlwZUVudHJ5
KTsKKyAgICAgICAgbV90b3RhbFNpemVzW29iamVjdFR5cGVdICs9IHNpemU7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3Ry
dW1lbnRlZFBvaW50ZXJCYXNlPiBwb2ludGVyKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9k
ZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzLmFwcGVuZChwb2ludGVyKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKiBvYmplY3QpIE9WRVJSSURFCisgICAg
eworICAgICAgICByZXR1cm4gIW1fdmlzaXRlZE9iamVjdHMuYWRkKG9iamVjdCkuaXNOZXdFbnRy
eTsKKyAgICB9CisKKyAgICBzaXplX3QgbV90b3RhbFNpemVzW0xhc3RUeXBlRW50cnldOworICAg
IFZpc2l0ZWRPYmplY3RzJiBtX3Zpc2l0ZWRPYmplY3RzOworICAgIFZlY3RvcjxPd25QdHI8SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2U+ID4gbV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzOwor
fTsKKworY2xhc3MgTm90SW5zdHJ1bWVudGVkIHsKK3B1YmxpYzoKKyAgICBjaGFyIG1fZGF0YVs0
Ml07Cit9OworCitjbGFzcyBJbnN0cnVtZW50ZWQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnN0cnVt
ZW50ZWQ+IHsKK3B1YmxpYzoKKyAgICBJbnN0cnVtZW50ZWQoKSA6IG1fbm90SW5zdHJ1bWVudGVk
KG5ldyBOb3RJbnN0cnVtZW50ZWQpIHsgfQorICAgIHZpcnR1YWwgfkluc3RydW1lbnRlZCgpIHsg
ZGVsZXRlIG1fbm90SW5zdHJ1bWVudGVkOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKKyAgICB7
CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxJbnN0cnVtZW50ZWQ+IGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBpbmZvLmFk
ZE1lbWJlcihtX25vdEluc3RydW1lbnRlZCk7CisgICAgfQorICAgIE5vdEluc3RydW1lbnRlZCog
bV9ub3RJbnN0cnVtZW50ZWQ7Cit9OworCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3Qs
IHNpemVPZikKK3sKKyAgICBWaXNpdGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsKKyAgICBNZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsIGltcGwodmlzaXRlZE9iamVjdHMpOworICAgIEluc3RydW1l
bnRlZCBpbnN0cnVtZW50ZWQ7CisgICAgaW1wbC5hZGRSb290T2JqZWN0KGluc3RydW1lbnRlZCk7
CisgICAgRVhQRUNUX0VRKHNpemVvZihOb3RJbnN0cnVtZW50ZWQpLCBpbXBsLnJlcG9ydGVkU2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMiwgdmlzaXRlZE9iamVjdHMuc2l6ZSgpKTsKK30KKworVEVT
VChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBudWxsQ2hlY2spCit7CisgICAgVmlzaXRlZE9i
amVjdHMgdmlzaXRlZE9iamVjdHM7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCBpbXBs
KHZpc2l0ZWRPYmplY3RzKTsKKyAgICBJbnN0cnVtZW50ZWQqIGluc3RydW1lbnRlZCA9IDA7Cisg
ICAgaW1wbC5hZGRSb290T2JqZWN0KGluc3RydW1lbnRlZCk7CisgICAgRVhQRUNUX0VRKDB1LCBp
bXBsLnJlcG9ydGVkU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgdmlzaXRlZE9iamVjdHMuc2l6
ZSgpKTsKK30KKworVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBwdHJWc1JlZikKK3sK
KyAgICB7CisgICAgICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0ZWRPYmplY3RzOworICAgICAgICBN
ZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIGltcGwodmlzaXRlZE9iamVjdHMpOworICAgICAgICBJ
bnN0cnVtZW50ZWQqIGluc3RydW1lbnRlZCA9IG5ldyBJbnN0cnVtZW50ZWQ7CisgICAgICAgIGlt
cGwuYWRkUm9vdE9iamVjdChpbnN0cnVtZW50ZWQpOworICAgICAgICBkZWxldGUgaW5zdHJ1bWVu
dGVkOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKEluc3RydW1lbnRlZCkgKyBzaXplb2YoTm90
SW5zdHJ1bWVudGVkKSwgaW1wbC5yZXBvcnRlZFNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgy
LCB2aXNpdGVkT2JqZWN0cy5zaXplKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFZpc2l0ZWRP
YmplY3RzIHZpc2l0ZWRPYmplY3RzOworICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBs
IGltcGwodmlzaXRlZE9iamVjdHMpOworICAgICAgICBJbnN0cnVtZW50ZWQgaW5zdHJ1bWVudGVk
OworICAgICAgICBpbXBsLmFkZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKKyAgICAgICAgRVhQ
RUNUX0VRKHNpemVvZihOb3RJbnN0cnVtZW50ZWQpLCBpbXBsLnJlcG9ydGVkU2l6ZSgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDIsIHZpc2l0ZWRPYmplY3RzLnNpemUoKSk7CisgICAgfQorfQorCitU
RVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIG93blB0cikKK3sKKyAgICBWaXNpdGVkT2Jq
ZWN0cyB2aXNpdGVkT2JqZWN0czsKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIGltcGwo
dmlzaXRlZE9iamVjdHMpOworICAgIE93blB0cjxJbnN0cnVtZW50ZWQ+IGluc3RydW1lbnRlZChh
ZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVkKSk7CisgICAgaW1wbC5hZGRSb290T2JqZWN0KGluc3Ry
dW1lbnRlZCk7CisgICAgRVhQRUNUX0VRKHNpemVvZihJbnN0cnVtZW50ZWQpICsgc2l6ZW9mKE5v
dEluc3RydW1lbnRlZCksIGltcGwucmVwb3J0ZWRTaXplKCkpOworICAgIEVYUEVDVF9FUSgyLCB2
aXNpdGVkT2JqZWN0cy5zaXplKCkpOworfQorCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRl
c3QsIHJlZlB0cikKK3sKKyAgICBWaXNpdGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsKKyAgICBN
ZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIGltcGwodmlzaXRlZE9iamVjdHMpOworICAgIFJlZlB0
cjxJbnN0cnVtZW50ZWQ+IGluc3RydW1lbnRlZChhZG9wdFJlZihuZXcgSW5zdHJ1bWVudGVkKSk7
CisgICAgaW1wbC5hZGRSb290T2JqZWN0KGluc3RydW1lbnRlZCk7CisgICAgRVhQRUNUX0VRKHNp
emVvZihJbnN0cnVtZW50ZWQpICsgc2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGltcGwucmVwb3J0
ZWRTaXplKCkpOworICAgIEVYUEVDVF9FUSgyLCB2aXNpdGVkT2JqZWN0cy5zaXplKCkpOworfQor
CitjbGFzcyBJbnN0cnVtZW50ZWRXaXRoT3duUHRyIDogcHVibGljIEluc3RydW1lbnRlZCB7Citw
dWJsaWM6CisgICAgSW5zdHJ1bWVudGVkV2l0aE93blB0cigpIDogbV9ub3RJbnN0cnVtZW50ZWRP
d25QdHIoYWRvcHRQdHIobmV3IE5vdEluc3RydW1lbnRlZCkpIHsgfQorCisgICAgdmlydHVhbCB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CisgICAgeworICAgICAgICBNZW1vcnlDbGFzc0luZm88SW5zdHJ1bWVudGVkV2l0aE93
blB0cj4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNTUyk7CisgICAgICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8SW5zdHJ1bWVudGVkPih0aGlzKTsK
KyAgICAgICAgaW5mby5hZGRNZW1iZXIobV9ub3RJbnN0cnVtZW50ZWRPd25QdHIpOworICAgIH0K
KyAgICBPd25QdHI8Tm90SW5zdHJ1bWVudGVkPiBtX25vdEluc3RydW1lbnRlZE93blB0cjsKK307
CisKK1RFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgb3duUHRyTm90SW5zdHJ1bWVudGVk
KQoreworICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0ZWRPYmplY3RzOworICAgIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2JqZWN0cyk7CisgICAgSW5zdHJ1bWVudGVkV2l0
aE93blB0ciBpbnN0cnVtZW50ZWRXaXRoT3duUHRyOworICAgIGltcGwuYWRkUm9vdE9iamVjdChp
bnN0cnVtZW50ZWRXaXRoT3duUHRyKTsKKyAgICBFWFBFQ1RfRVEoMiAqIHNpemVvZihOb3RJbnN0
cnVtZW50ZWQpLCBpbXBsLnJlcG9ydGVkU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgdmlzaXRl
ZE9iamVjdHMuc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155793</attachid>
            <date>2012-08-01 06:08:49 -0700</date>
            <delta_ts>2012-08-01 06:49:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92743-20120801170830.patch</filename>
            <type>text/plain</type>
            <size>17785</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YyZTg1N2Q4ZTQ0MDYz
YTY5MWRmNzE5OTNmNjc3ZDIzODFjNzg3NC4uYmUzNjdkYzI5MDhjODZhZDJkZmI0ZmZkZDI3ODA3
MTJjMzhkNWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA4LTAxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB0ZXN0IG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGNvZGUgd2l0aCBoZWxwIG9m
IHVuaXR0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTI3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0IGEgcGFydCBvZiBleGlzdGluZyBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBj
b2RlIHdpdGggaGVscCBvZiB1bml0IHRlc3RzLgorICAgICAgICA2IHRlc3RzIHdlcmUgYWRkZWQg
YW5kIHR3byBidWdzIHdlcmUgZml4ZWQuCisgICAgICAgIGEgZHJpdmUtYnkgaW1wcm92ZW1lbnQ6
IHRoZSBtZXRob2QgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3QK
KyAgICAgICAgd2FzIG1hcmtlZCBhcyBwcml2YXRlIGFuZCBhZGRSb290T2JqZWN0IHdhcyBpbnRy
b2R1Y2VkIGluc3RlYWQgb2YgaXQuCisgICAgICAgIFRoZSBuZXcgZnVuY3Rpb24gYWxzbyBjYWxs
cyBwcm9jZXNzRGVmZXJlZFBvaW50ZXJzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
UHJvZmlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RC
aW5kaW5nTWVtb3J5SW5mbyk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRSb290T2JqZWN0
KToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZE9iamVjdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbCk6CisKIDIwMTItMDgtMDEgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5l
dD4KIAogICAgICAgICBNYWtlIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dChBdG9taWNIVE1MVG9rZW4qKSBwcml2YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA5OWM5NWNlMzJiNGQ3ZDY3ODgyOGMwN2RhY2Q2Mjc5OThkNTBkNjBlLi4yYjcyOWE5NzQyNDJm
MjM2ZDQzNzFiNWZkYjc1OWVlMGZlMTE4NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMxIEBACisyMDEyLTA4LTAxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0ZXN0IG5hdGl2ZSBtZW1vcnkg
aW5zdHJ1bWVudGF0aW9uIGNvZGUgd2l0aCBoZWxwIG9mIHVuaXR0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGEgcGFydCBvZiBleGlzdGlu
ZyBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBjb2RlIHdpdGggaGVscCBvZiB1bml0IHRl
c3RzLgorICAgICAgICA2IHRlc3RzIHdlcmUgYWRkZWQgYW5kIHR3byBidWdzIHdlcmUgZml4ZWQu
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9NZW1vcnlJbnN0cnVt
ZW50YXRpb25UZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1l
bW9yeUluc3RydW1lbnRhdGlvbkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbDo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpyZXBvcnRlZFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6Y291bnRPYmplY3RTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OnByb2Nlc3NEZWZlcnJl
ZEluc3RydW1lbnRlZFBvaW50ZXJzKToKKyAgICAgICAgKE5vdEluc3RydW1lbnRlZCk6CisgICAg
ICAgIChJbnN0cnVtZW50ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkOjpJbnN0
cnVtZW50ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkOjp+SW5zdHJ1bWVudGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChJbnN0cnVtZW50ZWRXaXRoT3duUHRy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZFdpdGhPd25QdHI6Okluc3RydW1lbnRl
ZFdpdGhPd25QdHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkV2l0aE93blB0cjo6
cmVwb3J0TWVtb3J5VXNhZ2UpOgorCiAyMDEyLTA3LTMxICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3Np
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgRU5BQkxFX0lOUFVU
X1RZUEVfVElNRV9NVUxUSVBMRV9GSUVMRFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCAxZWJlOTFlYjE0N2MxYTFjNTU2NmEwYzhmZTY5N2Vm
NzlmYTdiZGE4Li4xM2NhZDMzODM0M2EyZGQxOTNlNzBiNjlmZTMyMmY5N2RjZjY2NTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0yMjMs
NyArMjIzLDcgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEFycmF5cyhFeHRl
cm5hbEFycmF5VmlzaXRvciogdmlzaXRvcikKIHZvaWQgU2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RC
aW5kaW5nTWVtb3J5SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbikK
IHsKICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjpjdXJyZW50KCk7Ci0gICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRP
YmplY3QoZGF0YSk7CisgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRSb290T2JqZWN0KGRhdGEpOwog
fQogCiBzaXplX3QgU2NyaXB0UHJvZmlsZXI6OnByb2ZpbGVyU25hcHNob3RzU2l6ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggY2NkYWYxOGQ3MjNj
OWJhNDRkYzQ3Nzg3OGRiM2I1MjU2OGFhYmYyZS4uNDI3OGUzOWM1YjQxMjY1OTRmODkwN2Q0YzI4
NDM0YzE3MGNmNTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRp
b24uaApAQCAtNTQsOSArNTQsMTAgQEAgcHVibGljOgogICAgICAgICBMYXN0VHlwZUVudHJ5CiAg
ICAgfTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9i
amVjdChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZFJvb3RP
YmplY3QoY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkSW5z
dHJ1bWVudGVkT2JqZWN0KHRoaXMsIHQpOworICAgICAgICBwcm9jZXNzRGVmZXJyZWRJbnN0cnVt
ZW50ZWRQb2ludGVycygpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWlu
ZXI+IHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShjb25zdCBDb250YWluZXIm
LCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwpAQCAtNjgsMTEgKzY5LDEyIEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKikg
PSAwOwogICAgIH07CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6
ZShPYmplY3RUeXBlLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVmZXJJbnN0cnVt
ZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U+KSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKSA9IDA7CiAKLXByaXZhdGU6
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBjbGFzcyBNZW1vcnlDbGFzc0luZm87
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEluc3RydW1lbnRlZFBvaW50ZXIgOiBw
dWJsaWMgSW5zdHJ1bWVudGVkUG9pbnRlckJhc2UgewogICAgIHB1YmxpYzoKQEAgLTg4LDYgKzkw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRPYmplY3QodGhpcywg
dCwgb2JqZWN0VHlwZSk7CiAgICAgfQogICAgIHZvaWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZyYs
IE9iamVjdFR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1l
bnRlZE9iamVjdChjb25zdCBUJiB0KSB7IE93bmluZ1RyYWl0czxUPjo6YWRkSW5zdHJ1bWVudGVk
T2JqZWN0KHRoaXMsIHQpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2
b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRl
bnRPbmx5ID0gZmFsc2UpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9p
ZCBhZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50
T25seSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IHZv
aWQgYWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYsIE9iamVj
dFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CkBAIC0xMjIsNiArMTI1LDggQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmLCBPd25pbmdUeXBlKTsKIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBPYmpl
Y3RUeXBlLCBPd25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRP
YmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBl
KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJl
ZlB0cjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKIH07CiAKIGNsYXNzIE1l
bW9yeU9iamVjdEluZm8gewpAQCAtMTk5LDE1ICsyMDQsMjcgQEAgdm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9iamVj
dCwgT3cKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBv
YmplY3QsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVj
dCwgT3duaW5nVHlwZSkKK3sKKyAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKG9iamVjdC0+
Z2V0KCksIGJ5UG9pbnRlcik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgUmVmUHRy
PFQ+KiBjb25zdCYgb2JqZWN0LCBPd25pbmdUeXBlKQoreworICAgIGFkZEluc3RydW1lbnRlZE9i
amVjdEltcGwob2JqZWN0LT5nZXQoKSwgYnlQb2ludGVyKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBP
d25QdHI8VD4qIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgT3duaW5nVHlw
ZSkKIHsKLSAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmlu
Z1R5cGUpOworICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb2JqZWN0VHlwZSwgYnlQ
b2ludGVyKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0
JiBvYmplY3QsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0
VHlwZSBvYmplY3RUeXBlLCBPd25pbmdUeXBlKQogewotICAgIGFkZEluc3RydW1lbnRlZE9iamVj
dEltcGwob2JqZWN0LT5nZXQoKSwgb3duaW5nVHlwZSk7CisgICAgYWRkT2JqZWN0SW1wbChvYmpl
Y3QtPmdldCgpLCBvYmplY3RUeXBlLCBieVBvaW50ZXIpOwogfQogCiAvLyBMaW5rIHRpbWUgZ3Vh
cmQgZm9yIHN0cmluZyBtZW1iZXJzLiBUaGV5IHByb2R1Y2UgbGluayBlcnJvciBpcyBhIHN0cmlu
ZyBpcyByZXBvcnRlZCB2aWEgYWRkT2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggNTI4YTM2OTM2NzEyODEyODA4YzBh
ZmM5YjFlMWMyM2I2MTA2NTZlZi4uNGYzMDE5NWFkZDUwZGYzNDE3MmE3MjYwYjY2NzIxZjQxNTIy
YWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCkBAIC00NDAsNyArNDQwLDYgQEAgc3RhdGljIHZvaWQgYWRkTWVtb3J5QmxvY2tG
b3IoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXksIHMKIAog
bmFtZXNwYWNlIHsKIAotCiBjbGFzcyBET01UcmVlc0l0ZXJhdG9yIDogcHVibGljIE5vZGVXcmFw
cGVyVmlzaXRvciB7CiBwdWJsaWM6CiAgICAgRE9NVHJlZXNJdGVyYXRvcihQYWdlKiBwYWdlLCBW
aXNpdGVkT2JqZWN0cyYgdmlzaXRlZE9iamVjdHMpCkBAIC00NTQsMjAgKzQ1MywxNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCktPmZy
YW1lKCkgJiYgbV9wYWdlICE9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLmFkZEluc3RydW1l
bnRlZE9iamVjdChub2RlKTsKLSAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5wcm9jZXNzRGVmZXJy
ZWRJbnN0cnVtZW50ZWRQb2ludGVycygpOworICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLmFkZFJv
b3RPYmplY3Qobm9kZSk7CiAgICAgfQogCiAgICAgdm9pZCB2aXNpdEZyYW1lKEZyYW1lKiBmcmFt
ZSkKICAgICB7Ci0gICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UuYWRkSW5zdHJ1bWVudGVkT2JqZWN0
KGZyYW1lKTsKLSAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5wcm9jZXNzRGVmZXJyZWRJbnN0cnVt
ZW50ZWRQb2ludGVycygpOworICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLmFkZFJvb3RPYmplY3Qo
ZnJhbWUpOwogICAgIH0KIAogICAgIHZvaWQgdmlzaXRCaW5kaW5ncygpCiAgICAgewogICAgICAg
ICBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEJpbmRpbmdNZW1vcnlJbmZvKCZtX2RvbU1lbW9yeVVz
YWdlKTsKLSAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5wcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50
ZWRQb2ludGVycygpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGR1bXBTdGF0aXN0aWNzKEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlv
bkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25J
bXBsLmgKaW5kZXggZmNkYTVjNWEwNTJhNmI2NmQ0MjYxY2MzNDNlMjQ0OTBjZWYwN2EwYS4uNTNh
YmIxMWQ4NzEyNjllNDNkNGI5MmMyYjE1MjMxODE3ZjU1NTIzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oCkBAIC00NCw3
ICs0NCw2IEBAIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgOiBwdWJsaWMgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZW1vcnlJbnN0cnVtZW50
YXRpb25JbXBsKFZpc2l0ZWRPYmplY3RzJik7CiAKLSAgICB2b2lkIHByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCk7CiAgICAgc2l6ZV90IHNlbGZTaXplKCkgY29uc3Q7CiAgICAg
c2l6ZV90IHRvdGFsVHlwZVNpemUoT2JqZWN0VHlwZSBvYmplY3RUeXBlKQogICAgIHsKQEAgLTU2
LDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE9i
amVjdFR5cGUsIHNpemVfdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlZmVySW5zdHJ1
bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpIE9WRVJS
SURFOwogCiAgICAgc2l6ZV90IG1fdG90YWxTaXplc1tMYXN0VHlwZUVudHJ5XTsKICAgICBWaXNp
dGVkT2JqZWN0cyYgbV92aXNpdGVkT2JqZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CmluZGV4IGI1MDcxODlkYjgzMzAyNWMyZjAzNDg0ZDM2YjQ0NTJmYThlZGMyNzUuLjYxYTM3NzIx
YzNmNWIyNDFjNGYyNjhjNmVmY2NjNjg3MzYxZjBkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQpAQCAtMTI2LDYgKzEyNiw3IEBACiAgICAgICAgICAgICAndGVzdHMvTG9jYWxpemVk
RGF0ZUlDVVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9Mb2NhbGl6ZWROdW1iZXJJQ1VU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvTWVtb3J5SW5mby5jcHAnLAorICAgICAgICAg
ICAgJ3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL09wYXF1ZVJlY3RU
cmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L09wZW5UeXBlVmVydGljYWxEYXRhVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDBjMjkwNjNlNjk3NGQyYzdjYzg3OGVhMTc5ZDQ2NjlmNzA0NzNmZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVGVzdC5jcHAKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgeworCit0eXBlZGVmIEhhc2hTZXQ8Y29uc3Qgdm9pZCo+IFZpc2l0ZWRPYmpl
Y3RzOworCitjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIDogcHVibGljIE1lbW9yeUlu
c3RydW1lbnRhdGlvbiB7CitwdWJsaWM6CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbChW
aXNpdGVkT2JqZWN0cyYgdmlzaXRlZE9iamVjdHMpIDogbV92aXNpdGVkT2JqZWN0cyh2aXNpdGVk
T2JqZWN0cykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTGFzdFR5cGVFbnRy
eTsgKytpKQorICAgICAgICAgICAgbV90b3RhbFNpemVzW2ldID0gMDsKKyAgICB9CisKKyAgICBz
aXplX3QgcmVwb3J0ZWRTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIHNpemVfdCBzaXplID0g
MDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBMYXN0VHlwZUVudHJ5OyArK2kpCisgICAg
ICAgICAgICBzaXplICs9IG1fdG90YWxTaXplc1tpXTsKKyAgICAgICAgcmV0dXJuIHNpemU7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoV2ViQ29y
ZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBz
aXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9iamVjdFR5cGUgPj0gMCAmJiBvYmplY3RUeXBl
IDwgTGFzdFR5cGVFbnRyeSk7CisgICAgICAgIG1fdG90YWxTaXplc1tvYmplY3RUeXBlXSArPSBz
aXplOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkZWZlckluc3RydW1lbnRlZFBvaW50ZXIo
UGFzc093blB0cjxJbnN0cnVtZW50ZWRQb2ludGVyQmFzZT4gcG9pbnRlcikgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycy5hcHBlbmQocG9pbnRl
cik7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCogb2JqZWN0
KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3Zpc2l0ZWRPYmplY3RzLmFkZChv
YmplY3QpLmlzTmV3RW50cnk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZl
cnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCkKKyAgICB7CisgICAgICAgIHdoaWxlICghbV9kZWZl
cnJlZEluc3RydW1lbnRlZFBvaW50ZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgT3duUHRy
PEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPiBwb2ludGVyID0gbV9kZWZlcnJlZEluc3RydW1lbnRl
ZFBvaW50ZXJzLmxhc3QoKS5yZWxlYXNlKCk7CisgICAgICAgICAgICBtX2RlZmVycmVkSW5zdHJ1
bWVudGVkUG9pbnRlcnMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgcG9pbnRlci0+cHJvY2Vz
cyh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNpemVfdCBtX3RvdGFsU2l6ZXNbTGFz
dFR5cGVFbnRyeV07CisgICAgVmlzaXRlZE9iamVjdHMmIG1fdmlzaXRlZE9iamVjdHM7CisgICAg
VmVjdG9yPE93blB0cjxJbnN0cnVtZW50ZWRQb2ludGVyQmFzZT4gPiBtX2RlZmVycmVkSW5zdHJ1
bWVudGVkUG9pbnRlcnM7Cit9OworCitjbGFzcyBOb3RJbnN0cnVtZW50ZWQgeworcHVibGljOgor
ICAgIGNoYXIgbV9kYXRhWzQyXTsKK307CisKK2NsYXNzIEluc3RydW1lbnRlZCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEluc3RydW1lbnRlZD4geworcHVibGljOgorICAgIEluc3RydW1lbnRlZCgpIDog
bV9ub3RJbnN0cnVtZW50ZWQobmV3IE5vdEluc3RydW1lbnRlZCkgeyB9CisgICAgdmlydHVhbCB+
SW5zdHJ1bWVudGVkKCkgeyBkZWxldGUgbV9ub3RJbnN0cnVtZW50ZWQ7IH0KKworICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPEluc3RydW1lbnRlZD4g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7
CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fbm90SW5zdHJ1bWVudGVkKTsKKyAgICB9CisgICAg
Tm90SW5zdHJ1bWVudGVkKiBtX25vdEluc3RydW1lbnRlZDsKK307CisKK1RFU1QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uVGVzdCwgc2l6ZU9mKQoreworICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0ZWRP
YmplY3RzOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2JqZWN0
cyk7CisgICAgSW5zdHJ1bWVudGVkIGluc3RydW1lbnRlZDsKKyAgICBpbXBsLmFkZFJvb3RPYmpl
Y3QoaW5zdHJ1bWVudGVkKTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKE5vdEluc3RydW1lbnRlZCks
IGltcGwucmVwb3J0ZWRTaXplKCkpOworICAgIEVYUEVDVF9FUSgyLCB2aXNpdGVkT2JqZWN0cy5z
aXplKCkpOworfQorCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIG51bGxDaGVjaykK
K3sKKyAgICBWaXNpdGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsKKyAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsIGltcGwodmlzaXRlZE9iamVjdHMpOworICAgIEluc3RydW1lbnRlZCogaW5z
dHJ1bWVudGVkID0gMDsKKyAgICBpbXBsLmFkZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKKyAg
ICBFWFBFQ1RfRVEoMHUsIGltcGwucmVwb3J0ZWRTaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCB2
aXNpdGVkT2JqZWN0cy5zaXplKCkpOworfQorCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRl
c3QsIHB0clZzUmVmKQoreworICAgIHsKKyAgICAgICAgVmlzaXRlZE9iamVjdHMgdmlzaXRlZE9i
amVjdHM7CisgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2Jq
ZWN0cyk7CisgICAgICAgIEluc3RydW1lbnRlZCogaW5zdHJ1bWVudGVkID0gbmV3IEluc3RydW1l
bnRlZDsKKyAgICAgICAgaW1wbC5hZGRSb290T2JqZWN0KGluc3RydW1lbnRlZCk7CisgICAgICAg
IGRlbGV0ZSBpbnN0cnVtZW50ZWQ7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoSW5zdHJ1bWVu
dGVkKSArIHNpemVvZihOb3RJbnN0cnVtZW50ZWQpLCBpbXBsLnJlcG9ydGVkU2l6ZSgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDIsIHZpc2l0ZWRPYmplY3RzLnNpemUoKSk7CisgICAgfQorICAgIHsK
KyAgICAgICAgVmlzaXRlZE9iamVjdHMgdmlzaXRlZE9iamVjdHM7CisgICAgICAgIE1lbW9yeUlu
c3RydW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2JqZWN0cyk7CisgICAgICAgIEluc3RydW1l
bnRlZCBpbnN0cnVtZW50ZWQ7CisgICAgICAgIGltcGwuYWRkUm9vdE9iamVjdChpbnN0cnVtZW50
ZWQpOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGltcGwucmVw
b3J0ZWRTaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMiwgdmlzaXRlZE9iamVjdHMuc2l6ZSgp
KTsKKyAgICB9Cit9CisKK1RFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgb3duUHRyKQor
eworICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0ZWRPYmplY3RzOworICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2JqZWN0cyk7CisgICAgT3duUHRyPEluc3RydW1lbnRl
ZD4gaW5zdHJ1bWVudGVkKGFkb3B0UHRyKG5ldyBJbnN0cnVtZW50ZWQpKTsKKyAgICBpbXBsLmFk
ZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKEluc3RydW1l
bnRlZCkgKyBzaXplb2YoTm90SW5zdHJ1bWVudGVkKSwgaW1wbC5yZXBvcnRlZFNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIHZpc2l0ZWRPYmplY3RzLnNpemUoKSk7Cit9CisKK1RFU1QoTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVGVzdCwgcmVmUHRyKQoreworICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0
ZWRPYmplY3RzOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2Jq
ZWN0cyk7CisgICAgUmVmUHRyPEluc3RydW1lbnRlZD4gaW5zdHJ1bWVudGVkKGFkb3B0UmVmKG5l
dyBJbnN0cnVtZW50ZWQpKTsKKyAgICBpbXBsLmFkZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsK
KyAgICBFWFBFQ1RfRVEoc2l6ZW9mKEluc3RydW1lbnRlZCkgKyBzaXplb2YoTm90SW5zdHJ1bWVu
dGVkKSwgaW1wbC5yZXBvcnRlZFNpemUoKSk7CisgICAgRVhQRUNUX0VRKDIsIHZpc2l0ZWRPYmpl
Y3RzLnNpemUoKSk7Cit9CisKK2NsYXNzIEluc3RydW1lbnRlZFdpdGhPd25QdHIgOiBwdWJsaWMg
SW5zdHJ1bWVudGVkIHsKK3B1YmxpYzoKKyAgICBJbnN0cnVtZW50ZWRXaXRoT3duUHRyKCkgOiBt
X25vdEluc3RydW1lbnRlZE93blB0cihhZG9wdFB0cihuZXcgTm90SW5zdHJ1bWVudGVkKSkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKKyAgICB7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxJ
bnN0cnVtZW50ZWRXaXRoT3duUHRyPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaW5mby52aXNpdEJhc2VDbGFzczxJbnN0
cnVtZW50ZWQ+KHRoaXMpOworICAgICAgICBpbmZvLmFkZE1lbWJlcihtX25vdEluc3RydW1lbnRl
ZE93blB0cik7CisgICAgfQorICAgIE93blB0cjxOb3RJbnN0cnVtZW50ZWQ+IG1fbm90SW5zdHJ1
bWVudGVkT3duUHRyOworfTsKKworVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBvd25Q
dHJOb3RJbnN0cnVtZW50ZWQpCit7CisgICAgVmlzaXRlZE9iamVjdHMgdmlzaXRlZE9iamVjdHM7
CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCBpbXBsKHZpc2l0ZWRPYmplY3RzKTsKKyAg
ICBJbnN0cnVtZW50ZWRXaXRoT3duUHRyIGluc3RydW1lbnRlZFdpdGhPd25QdHI7CisgICAgaW1w
bC5hZGRSb290T2JqZWN0KGluc3RydW1lbnRlZFdpdGhPd25QdHIpOworICAgIEVYUEVDVF9FUSgy
ICogc2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGltcGwucmVwb3J0ZWRTaXplKCkpOworICAgIEVY
UEVDVF9FUSgzLCB2aXNpdGVkT2JqZWN0cy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQor
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155799</attachid>
            <date>2012-08-01 06:49:27 -0700</date>
            <delta_ts>2012-08-01 07:18:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92743-20120801174908.patch</filename>
            <type>text/plain</type>
            <size>18602</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YyZTg1N2Q4ZTQ0MDYz
YTY5MWRmNzE5OTNmNjc3ZDIzODFjNzg3NC4uYmUzNjdkYzI5MDhjODZhZDJkZmI0ZmZkZDI3ODA3
MTJjMzhkNWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA4LTAxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB0ZXN0IG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGNvZGUgd2l0aCBoZWxwIG9m
IHVuaXR0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTI3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0IGEgcGFydCBvZiBleGlzdGluZyBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBj
b2RlIHdpdGggaGVscCBvZiB1bml0IHRlc3RzLgorICAgICAgICA2IHRlc3RzIHdlcmUgYWRkZWQg
YW5kIHR3byBidWdzIHdlcmUgZml4ZWQuCisgICAgICAgIGEgZHJpdmUtYnkgaW1wcm92ZW1lbnQ6
IHRoZSBtZXRob2QgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3QK
KyAgICAgICAgd2FzIG1hcmtlZCBhcyBwcml2YXRlIGFuZCBhZGRSb290T2JqZWN0IHdhcyBpbnRy
b2R1Y2VkIGluc3RlYWQgb2YgaXQuCisgICAgICAgIFRoZSBuZXcgZnVuY3Rpb24gYWxzbyBjYWxs
cyBwcm9jZXNzRGVmZXJlZFBvaW50ZXJzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
UHJvZmlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RC
aW5kaW5nTWVtb3J5SW5mbyk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRSb290T2JqZWN0
KToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZE9iamVjdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbCk6CisKIDIwMTItMDgtMDEgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5l
dD4KIAogICAgICAgICBNYWtlIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dChBdG9taWNIVE1MVG9rZW4qKSBwcml2YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA5OWM5NWNlMzJiNGQ3ZDY3ODgyOGMwN2RhY2Q2Mjc5OThkNTBkNjBlLi4yYjcyOWE5NzQyNDJm
MjM2ZDQzNzFiNWZkYjc1OWVlMGZlMTE4NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMxIEBACisyMDEyLTA4LTAxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0ZXN0IG5hdGl2ZSBtZW1vcnkg
aW5zdHJ1bWVudGF0aW9uIGNvZGUgd2l0aCBoZWxwIG9mIHVuaXR0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGEgcGFydCBvZiBleGlzdGlu
ZyBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBjb2RlIHdpdGggaGVscCBvZiB1bml0IHRl
c3RzLgorICAgICAgICA2IHRlc3RzIHdlcmUgYWRkZWQgYW5kIHR3byBidWdzIHdlcmUgZml4ZWQu
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9NZW1vcnlJbnN0cnVt
ZW50YXRpb25UZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1l
bW9yeUluc3RydW1lbnRhdGlvbkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbDo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpyZXBvcnRlZFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6Y291bnRPYmplY3RTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OnByb2Nlc3NEZWZlcnJl
ZEluc3RydW1lbnRlZFBvaW50ZXJzKToKKyAgICAgICAgKE5vdEluc3RydW1lbnRlZCk6CisgICAg
ICAgIChJbnN0cnVtZW50ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkOjpJbnN0
cnVtZW50ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkOjp+SW5zdHJ1bWVudGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChJbnN0cnVtZW50ZWRXaXRoT3duUHRy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZFdpdGhPd25QdHI6Okluc3RydW1lbnRl
ZFdpdGhPd25QdHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkV2l0aE93blB0cjo6
cmVwb3J0TWVtb3J5VXNhZ2UpOgorCiAyMDEyLTA3LTMxICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3Np
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgRU5BQkxFX0lOUFVU
X1RZUEVfVElNRV9NVUxUSVBMRV9GSUVMRFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCAxZWJlOTFlYjE0N2MxYTFjNTU2NmEwYzhmZTY5N2Vm
NzlmYTdiZGE4Li4xM2NhZDMzODM0M2EyZGQxOTNlNzBiNjlmZTMyMmY5N2RjZjY2NTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0yMjMs
NyArMjIzLDcgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEFycmF5cyhFeHRl
cm5hbEFycmF5VmlzaXRvciogdmlzaXRvcikKIHZvaWQgU2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RC
aW5kaW5nTWVtb3J5SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbikK
IHsKICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjpjdXJyZW50KCk7Ci0gICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRP
YmplY3QoZGF0YSk7CisgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRSb290T2JqZWN0KGRhdGEpOwog
fQogCiBzaXplX3QgU2NyaXB0UHJvZmlsZXI6OnByb2ZpbGVyU25hcHNob3RzU2l6ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggY2NkYWYxOGQ3MjNj
OWJhNDRkYzQ3Nzg3OGRiM2I1MjU2OGFhYmYyZS4uNDI3OGUzOWM1YjQxMjY1OTRmODkwN2Q0YzI4
NDM0YzE3MGNmNTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRp
b24uaApAQCAtNTQsOSArNTQsMTAgQEAgcHVibGljOgogICAgICAgICBMYXN0VHlwZUVudHJ5CiAg
ICAgfTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9i
amVjdChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZFJvb3RP
YmplY3QoY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkSW5z
dHJ1bWVudGVkT2JqZWN0KHRoaXMsIHQpOworICAgICAgICBwcm9jZXNzRGVmZXJyZWRJbnN0cnVt
ZW50ZWRQb2ludGVycygpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWlu
ZXI+IHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShjb25zdCBDb250YWluZXIm
LCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwpAQCAtNjgsMTEgKzY5LDEyIEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKikg
PSAwOwogICAgIH07CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6
ZShPYmplY3RUeXBlLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVmZXJJbnN0cnVt
ZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U+KSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKSA9IDA7CiAKLXByaXZhdGU6
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBjbGFzcyBNZW1vcnlDbGFzc0luZm87
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEluc3RydW1lbnRlZFBvaW50ZXIgOiBw
dWJsaWMgSW5zdHJ1bWVudGVkUG9pbnRlckJhc2UgewogICAgIHB1YmxpYzoKQEAgLTg4LDYgKzkw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRPYmplY3QodGhpcywg
dCwgb2JqZWN0VHlwZSk7CiAgICAgfQogICAgIHZvaWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZyYs
IE9iamVjdFR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1l
bnRlZE9iamVjdChjb25zdCBUJiB0KSB7IE93bmluZ1RyYWl0czxUPjo6YWRkSW5zdHJ1bWVudGVk
T2JqZWN0KHRoaXMsIHQpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2
b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRl
bnRPbmx5ID0gZmFsc2UpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9p
ZCBhZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50
T25seSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IHZv
aWQgYWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYsIE9iamVj
dFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CkBAIC0xMjIsNiArMTI1LDggQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmLCBPd25pbmdUeXBlKTsKIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBPYmpl
Y3RUeXBlLCBPd25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRP
YmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBl
KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJl
ZlB0cjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKIH07CiAKIGNsYXNzIE1l
bW9yeU9iamVjdEluZm8gewpAQCAtMTk5LDE1ICsyMDQsMjcgQEAgdm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9iamVj
dCwgT3cKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBv
YmplY3QsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVj
dCwgT3duaW5nVHlwZSkKK3sKKyAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKG9iamVjdC0+
Z2V0KCksIGJ5UG9pbnRlcik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgUmVmUHRy
PFQ+KiBjb25zdCYgb2JqZWN0LCBPd25pbmdUeXBlKQoreworICAgIGFkZEluc3RydW1lbnRlZE9i
amVjdEltcGwob2JqZWN0LT5nZXQoKSwgYnlQb2ludGVyKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBP
d25QdHI8VD4qIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgT3duaW5nVHlw
ZSkKIHsKLSAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmlu
Z1R5cGUpOworICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb2JqZWN0VHlwZSwgYnlQ
b2ludGVyKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0
JiBvYmplY3QsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0
VHlwZSBvYmplY3RUeXBlLCBPd25pbmdUeXBlKQogewotICAgIGFkZEluc3RydW1lbnRlZE9iamVj
dEltcGwob2JqZWN0LT5nZXQoKSwgb3duaW5nVHlwZSk7CisgICAgYWRkT2JqZWN0SW1wbChvYmpl
Y3QtPmdldCgpLCBvYmplY3RUeXBlLCBieVBvaW50ZXIpOwogfQogCiAvLyBMaW5rIHRpbWUgZ3Vh
cmQgZm9yIHN0cmluZyBtZW1iZXJzLiBUaGV5IHByb2R1Y2UgbGluayBlcnJvciBpcyBhIHN0cmlu
ZyBpcyByZXBvcnRlZCB2aWEgYWRkT2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggNTI4YTM2OTM2NzEyODEyODA4YzBh
ZmM5YjFlMWMyM2I2MTA2NTZlZi4uMmIxYzRmOTFiYWZiMTUxZmY4Mzk3NTMxZmEwMTk2Y2JkYWU0
MDBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCkBAIC00NDAsNyArNDQwLDYgQEAgc3RhdGljIHZvaWQgYWRkTWVtb3J5QmxvY2tG
b3IoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXksIHMKIAog
bmFtZXNwYWNlIHsKIAotCiBjbGFzcyBET01UcmVlc0l0ZXJhdG9yIDogcHVibGljIE5vZGVXcmFw
cGVyVmlzaXRvciB7CiBwdWJsaWM6CiAgICAgRE9NVHJlZXNJdGVyYXRvcihQYWdlKiBwYWdlLCBW
aXNpdGVkT2JqZWN0cyYgdmlzaXRlZE9iamVjdHMpCkBAIC00NTQsMjAgKzQ1MywxNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCktPmZy
YW1lKCkgJiYgbV9wYWdlICE9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLmFkZEluc3RydW1l
bnRlZE9iamVjdChub2RlKTsKLSAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5wcm9jZXNzRGVmZXJy
ZWRJbnN0cnVtZW50ZWRQb2ludGVycygpOworICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLmFkZFJv
b3RPYmplY3Qobm9kZSk7CiAgICAgfQogCiAgICAgdm9pZCB2aXNpdEZyYW1lKEZyYW1lKiBmcmFt
ZSkKICAgICB7Ci0gICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UuYWRkSW5zdHJ1bWVudGVkT2JqZWN0
KGZyYW1lKTsKLSAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5wcm9jZXNzRGVmZXJyZWRJbnN0cnVt
ZW50ZWRQb2ludGVycygpOworICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLmFkZFJvb3RPYmplY3Qo
ZnJhbWUpOwogICAgIH0KIAogICAgIHZvaWQgdmlzaXRCaW5kaW5ncygpCiAgICAgewogICAgICAg
ICBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEJpbmRpbmdNZW1vcnlJbmZvKCZtX2RvbU1lbW9yeVVz
YWdlKTsKLSAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5wcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50
ZWRQb2ludGVycygpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGR1bXBTdGF0aXN0aWNzKEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQpA
QCAtNDc2LDE0ICs0NzIsMTQgQEAgcHVibGljOgogCiAgICAgICAgIHNpemVfdCB0b3RhbFNpemUg
PSAwOwogICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhlcjsg
aSA8IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TGFzdFR5cGVFbnRyeTsgKytpKQotICAgICAgICAg
ICAgdG90YWxTaXplICs9IG1fZG9tTWVtb3J5VXNhZ2UudG90YWxUeXBlU2l6ZShzdGF0aWNfY2Fz
dDxNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGU+KGkpKTsKKyAgICAgICAgICAgIHRv
dGFsU2l6ZSArPSBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShzdGF0aWNfY2FzdDxNZW1vcnlJ
bnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGU+KGkpKTsKIAogICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGRvbUNoaWxkcmVuID0gVHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgICAgIGFk
ZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFs
VHlwZVNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhlciksIE1lbW9yeUJsb2NrTmFtZTo6
ZG9tVHJlZU90aGVyKTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0
KCksIG1fZG9tTWVtb3J5VXNhZ2UudG90YWxUeXBlU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSksIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZURPTSk7Ci0gICAgICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsVHlwZVNpemUo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVDU1Mp
OwotICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1v
cnlVc2FnZS50b3RhbFR5cGVTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyksIE1l
bW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUJpbmRpbmcpOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0Zv
cihkb21DaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1vcnlVc2FnZS50b3RhbFR5cGVTaXplKE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6TG9hZGVyKSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlTG9hZGVy
KTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVt
b3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpLCBNZW1vcnlC
bG9ja05hbWU6OmRvbVRyZWVPdGhlcik7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNo
aWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSksIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZURPTSk7CisgICAgICAgIGFkZE1l
bW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6
ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyksIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUNT
Uyk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX2RvbU1l
bW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpLCBNZW1v
cnlCbG9ja05hbWU6OmRvbVRyZWVCaW5kaW5nKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3Io
ZG9tQ2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6TG9hZGVyKSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlTG9hZGVyKTsKIAog
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbSA9IEluc3BlY3Rvck1lbW9y
eUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6ZG9tKTsKICAgICAgICAg
ZG9tLT5zZXRTaXplKHRvdGFsU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAppbmRleCBmY2RhNWM1YTA1MmE2YjY2ZDQy
NjFjYzM0M2UyNDQ5MGNlZjA3YTBhLi4zNGQ4ZDQ4OTRmNGExNGU2Zjk1MTY0MDU2ZDZmMzM2YzEx
MGNhZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsLmgKQEAgLTQ0LDE4ICs0NCwyNiBAQCBjbGFzcyBNZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsIDogcHVibGljIE1lbW9yeUluc3RydW1lbnRhdGlvbiB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbChWaXNpdGVkT2JqZWN0cyYpOwog
Ci0gICAgdm9pZCBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpOwogICAgIHNp
emVfdCBzZWxmU2l6ZSgpIGNvbnN0OwotICAgIHNpemVfdCB0b3RhbFR5cGVTaXplKE9iamVjdFR5
cGUgb2JqZWN0VHlwZSkKKyAgICBzaXplX3QgdG90YWxTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlw
ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChvYmplY3RUeXBlID49IDAgJiYgb2JqZWN0
VHlwZSA8IExhc3RUeXBlRW50cnkpOwogICAgICAgICByZXR1cm4gbV90b3RhbFNpemVzW29iamVj
dFR5cGVdOwogICAgIH0KIAorICAgIHNpemVfdCByZXBvcnRlZFNpemUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgc2l6ZV90IHNpemUgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IExh
c3RUeXBlRW50cnk7ICsraSkKKyAgICAgICAgICAgIHNpemUgKz0gbV90b3RhbFNpemVzW2ldOwor
ICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGNvdW50T2JqZWN0U2l6ZShPYmplY3RUeXBlLCBzaXplX3QpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkZWZlckluc3RydW1lbnRlZFBvaW50ZXIoUGFzc093blB0cjxJbnN0cnVtZW50ZWRQ
b2ludGVyQmFzZT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZv
aWQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVu
dGVkUG9pbnRlcnMoKSBPVkVSUklERTsKIAogICAgIHNpemVfdCBtX3RvdGFsU2l6ZXNbTGFzdFR5
cGVFbnRyeV07CiAgICAgVmlzaXRlZE9iamVjdHMmIG1fdmlzaXRlZE9iamVjdHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBiNTA3MTg5ZGI4MzMwMjVjMmYwMzQ4NGQzNmI0NDUy
ZmE4ZWRjMjc1Li42MWEzNzcyMWMzZjViMjQxYzRmMjY4YzZlZmNjYzY4NzM2MWYwZDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEyNiw2ICsxMjYsNyBAQAogICAgICAgICAg
ICAgJ3Rlc3RzL0xvY2FsaXplZERhdGVJQ1VUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
TG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL01lbW9yeUlu
Zm8uY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oJywKICAgICAgICAgICAg
ICd0ZXN0cy9PcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZVRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9PcGVuVHlwZVZlcnRpY2FsRGF0YVRlc3QuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01lbW9yeUluc3RydW1lbnRh
dGlvblRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkY2FiZTA0YTkzYjRlZmVlMTVmMTIzNGU2YzRlMGJm
NTc4MjMzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIgorCisj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKKworY2xhc3MgTm90SW5zdHJ1
bWVudGVkIHsKK3B1YmxpYzoKKyAgICBjaGFyIG1fZGF0YVs0Ml07Cit9OworCitjbGFzcyBJbnN0
cnVtZW50ZWQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnN0cnVtZW50ZWQ+IHsKK3B1YmxpYzoKKyAg
ICBJbnN0cnVtZW50ZWQoKSA6IG1fbm90SW5zdHJ1bWVudGVkKG5ldyBOb3RJbnN0cnVtZW50ZWQp
IHsgfQorICAgIHZpcnR1YWwgfkluc3RydW1lbnRlZCgpIHsgZGVsZXRlIG1fbm90SW5zdHJ1bWVu
dGVkOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKKyAgICB7CisgICAgICAgIE1lbW9yeUNsYXNz
SW5mbzxJbnN0cnVtZW50ZWQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBpbmZvLmFkZE1lbWJlcihtX25vdEluc3RydW1l
bnRlZCk7CisgICAgfQorICAgIE5vdEluc3RydW1lbnRlZCogbV9ub3RJbnN0cnVtZW50ZWQ7Cit9
OworCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHNpemVPZikKK3sKKyAgICBWaXNp
dGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBs
IGltcGwodmlzaXRlZE9iamVjdHMpOworICAgIEluc3RydW1lbnRlZCBpbnN0cnVtZW50ZWQ7Cisg
ICAgaW1wbC5hZGRSb290T2JqZWN0KGluc3RydW1lbnRlZCk7CisgICAgRVhQRUNUX0VRKHNpemVv
ZihOb3RJbnN0cnVtZW50ZWQpLCBpbXBsLnJlcG9ydGVkU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
MiwgdmlzaXRlZE9iamVjdHMuc2l6ZSgpKTsKK30KKworVEVTVChNZW1vcnlJbnN0cnVtZW50YXRp
b25UZXN0LCBudWxsQ2hlY2spCit7CisgICAgVmlzaXRlZE9iamVjdHMgdmlzaXRlZE9iamVjdHM7
CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCBpbXBsKHZpc2l0ZWRPYmplY3RzKTsKKyAg
ICBJbnN0cnVtZW50ZWQqIGluc3RydW1lbnRlZCA9IDA7CisgICAgaW1wbC5hZGRSb290T2JqZWN0
KGluc3RydW1lbnRlZCk7CisgICAgRVhQRUNUX0VRKDB1LCBpbXBsLnJlcG9ydGVkU2l6ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgdmlzaXRlZE9iamVjdHMuc2l6ZSgpKTsKK30KKworVEVTVChNZW1v
cnlJbnN0cnVtZW50YXRpb25UZXN0LCBwdHJWc1JlZikKK3sKKyAgICB7CisgICAgICAgIFZpc2l0
ZWRPYmplY3RzIHZpc2l0ZWRPYmplY3RzOworICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25J
bXBsIGltcGwodmlzaXRlZE9iamVjdHMpOworICAgICAgICBJbnN0cnVtZW50ZWQqIGluc3RydW1l
bnRlZCA9IG5ldyBJbnN0cnVtZW50ZWQ7CisgICAgICAgIGltcGwuYWRkUm9vdE9iamVjdChpbnN0
cnVtZW50ZWQpOworICAgICAgICBkZWxldGUgaW5zdHJ1bWVudGVkOworICAgICAgICBFWFBFQ1Rf
RVEoc2l6ZW9mKEluc3RydW1lbnRlZCkgKyBzaXplb2YoTm90SW5zdHJ1bWVudGVkKSwgaW1wbC5y
ZXBvcnRlZFNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgyLCB2aXNpdGVkT2JqZWN0cy5zaXpl
KCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0ZWRPYmplY3Rz
OworICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIGltcGwodmlzaXRlZE9iamVjdHMp
OworICAgICAgICBJbnN0cnVtZW50ZWQgaW5zdHJ1bWVudGVkOworICAgICAgICBpbXBsLmFkZFJv
b3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKKyAgICAgICAgRVhQRUNUX0VRKHNpemVvZihOb3RJbnN0
cnVtZW50ZWQpLCBpbXBsLnJlcG9ydGVkU2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDIsIHZp
c2l0ZWRPYmplY3RzLnNpemUoKSk7CisgICAgfQorfQorCitURVNUKE1lbW9yeUluc3RydW1lbnRh
dGlvblRlc3QsIG93blB0cikKK3sKKyAgICBWaXNpdGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsK
KyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIGltcGwodmlzaXRlZE9iamVjdHMpOworICAg
IE93blB0cjxJbnN0cnVtZW50ZWQ+IGluc3RydW1lbnRlZChhZG9wdFB0cihuZXcgSW5zdHJ1bWVu
dGVkKSk7CisgICAgaW1wbC5hZGRSb290T2JqZWN0KGluc3RydW1lbnRlZCk7CisgICAgRVhQRUNU
X0VRKHNpemVvZihJbnN0cnVtZW50ZWQpICsgc2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGltcGwu
cmVwb3J0ZWRTaXplKCkpOworICAgIEVYUEVDVF9FUSgyLCB2aXNpdGVkT2JqZWN0cy5zaXplKCkp
OworfQorCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHJlZlB0cikKK3sKKyAgICBW
aXNpdGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25J
bXBsIGltcGwodmlzaXRlZE9iamVjdHMpOworICAgIFJlZlB0cjxJbnN0cnVtZW50ZWQ+IGluc3Ry
dW1lbnRlZChhZG9wdFJlZihuZXcgSW5zdHJ1bWVudGVkKSk7CisgICAgaW1wbC5hZGRSb290T2Jq
ZWN0KGluc3RydW1lbnRlZCk7CisgICAgRVhQRUNUX0VRKHNpemVvZihJbnN0cnVtZW50ZWQpICsg
c2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGltcGwucmVwb3J0ZWRTaXplKCkpOworICAgIEVYUEVD
VF9FUSgyLCB2aXNpdGVkT2JqZWN0cy5zaXplKCkpOworfQorCitjbGFzcyBJbnN0cnVtZW50ZWRX
aXRoT3duUHRyIDogcHVibGljIEluc3RydW1lbnRlZCB7CitwdWJsaWM6CisgICAgSW5zdHJ1bWVu
dGVkV2l0aE93blB0cigpIDogbV9ub3RJbnN0cnVtZW50ZWRPd25QdHIoYWRvcHRQdHIobmV3IE5v
dEluc3RydW1lbnRlZCkpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgeworICAgICAg
ICBNZW1vcnlDbGFzc0luZm88SW5zdHJ1bWVudGVkV2l0aE93blB0cj4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgICAgIGluZm8u
dmlzaXRCYXNlQ2xhc3M8SW5zdHJ1bWVudGVkPih0aGlzKTsKKyAgICAgICAgaW5mby5hZGRNZW1i
ZXIobV9ub3RJbnN0cnVtZW50ZWRPd25QdHIpOworICAgIH0KKyAgICBPd25QdHI8Tm90SW5zdHJ1
bWVudGVkPiBtX25vdEluc3RydW1lbnRlZE93blB0cjsKK307CisKK1RFU1QoTWVtb3J5SW5zdHJ1
bWVudGF0aW9uVGVzdCwgb3duUHRyTm90SW5zdHJ1bWVudGVkKQoreworICAgIFZpc2l0ZWRPYmpl
Y3RzIHZpc2l0ZWRPYmplY3RzOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgaW1wbCh2
aXNpdGVkT2JqZWN0cyk7CisgICAgSW5zdHJ1bWVudGVkV2l0aE93blB0ciBpbnN0cnVtZW50ZWRX
aXRoT3duUHRyOworICAgIGltcGwuYWRkUm9vdE9iamVjdChpbnN0cnVtZW50ZWRXaXRoT3duUHRy
KTsKKyAgICBFWFBFQ1RfRVEoMiAqIHNpemVvZihOb3RJbnN0cnVtZW50ZWQpLCBpbXBsLnJlcG9y
dGVkU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgdmlzaXRlZE9iamVjdHMuc2l6ZSgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UKKwo=
</data>
<flag name="review"
          id="165336"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>