<?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>99457</bug_id>
          
          <creation_ts>2012-10-16 05:22:36 -0700</creation_ts>
          <short_desc>Web Inspector: NMI provide data for mixing with tcmalloc heap dumps</short_desc>
          <delta_ts>2012-10-19 00:45:32 -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>
          
          
          <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>benjamin</cc>
    
    <cc>cabanier</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vsevik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>743081</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-16 05:22:36 -0700</bug_when>
    <thetext>Early we used tcmalloc heap dumps for check what classes have to be instrumented first.
We instrumented a lot of classes and it became difficult to use heap dumps for this task.
We need a way to see the classes that aren&apos;t instrumented yet or their objects were not reached during snapshot.
We could use heap dump but need to mix tcmalloc data with the data about already counted objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743093</commentid>
    <comment_count>1</comment_count>
      <attachid>168932</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-16 05:58:59 -0700</bug_when>
    <thetext>Created attachment 168932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743214</commentid>
    <comment_count>2</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-10-16 09:39:04 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744246</commentid>
    <comment_count>3</comment_count>
      <attachid>168932</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-17 08:09:48 -0700</bug_when>
    <thetext>Comment on attachment 168932
Patch

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

&gt; Source/WebKit/chromium/public/WebDevToolsAgentClient.h:66
&gt; +        virtual size_t visitObject(const void* ptr) = 0;

Please use separate interface for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744294</commentid>
    <comment_count>4</comment_count>
      <attachid>169193</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-17 09:08:49 -0700</bug_when>
    <thetext>Created attachment 169193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744299</commentid>
    <comment_count>5</comment_count>
      <attachid>169194</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-17 09:18:57 -0700</bug_when>
    <thetext>Created attachment 169194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744300</commentid>
    <comment_count>6</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-17 09:20:48 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 168932 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168932&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebDevToolsAgentClient.h:66
&gt; &gt; +        virtual size_t visitObject(const void* ptr) = 0;
&gt; 
&gt; Please use separate interface for this.

comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744311</commentid>
    <comment_count>7</comment_count>
      <attachid>169194</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-17 09:35:48 -0700</bug_when>
    <thetext>Comment on attachment 169194
Patch

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

&gt; Source/WebKit/chromium/public/WebDevToolsAgentClient.h:78
&gt; +    virtual void dumpUncountedObjects(const ObjectInfoProvider*) { }

dumpAllocatedObjects?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744452</commentid>
    <comment_count>8</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-17 11:26:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 169194 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169194&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebDevToolsAgentClient.h:78
&gt; &gt; +    virtual void dumpUncountedObjects(const ObjectInfoProvider*) { }
&gt; 
&gt; dumpAllocatedObjects?

I am sure that we do not want to print all the allocated objects.
Thus, the current name better suits for this purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745071</commentid>
    <comment_count>9</comment_count>
      <attachid>169194</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-18 01:18:43 -0700</bug_when>
    <thetext>Comment on attachment 169194
Patch

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

&gt; Source/WebKit/chromium/public/WebDevToolsAgentClient.h:72
&gt; +    class ObjectInfoProvider {

Maybe rename ObjectInfoProvider to InstrumentedObjects?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745072</commentid>
    <comment_count>10</comment_count>
      <attachid>169194</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-10-18 01:21:41 -0700</bug_when>
    <thetext>Comment on attachment 169194
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/public/WebDevToolsAgentClient.h:78
&gt;&gt;&gt; +    virtual void dumpUncountedObjects(const ObjectInfoProvider*) { }
&gt;&gt; 
&gt;&gt; dumpAllocatedObjects?
&gt; 
&gt; I am sure that we do not want to print all the allocated objects.
&gt; Thus, the current name better suits for this purpose.

dumpUncountedAllocatedObjects then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745074</commentid>
    <comment_count>11</comment_count>
      <attachid>169194</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-10-18 01:23:01 -0700</bug_when>
    <thetext>Comment on attachment 169194
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebDevToolsAgentClient.h:72
&gt;&gt; +    class ObjectInfoProvider {
&gt; 
&gt; Maybe rename ObjectInfoProvider to InstrumentedObjects?

AllocatedObjectSizeProvider?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746102</commentid>
    <comment_count>12</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-19 00:45:32 -0700</bug_when>
    <thetext>Committed r131869: &lt;http://trac.webkit.org/changeset/131869&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168932</attachid>
            <date>2012-10-16 05:58:59 -0700</date>
            <delta_ts>2012-10-17 09:08:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99457-20121016165747.patch</filename>
            <type>text/plain</type>
            <size>24278</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwNzkzMzU4ZjdhNDc3NTFhZjg2NDky
ZmY0ZGQxODFhNWI4NjAyMmEuLjNhZDBiOWRhMTBlYjZmZTU4YjU0YTQ4ZWVlMzM1ZTkzM2UxZmQy
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKK3gyMDEyLTEwLTE2ICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUkgcHJvdmlk
ZSBkYXRhIGZvciBtaXhpbmcgd2l0aCB0Y21hbGxvYyBoZWFwIGR1bXBzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjaGVja0NvdW50ZWRPYmplY3Qgd2Fz
IHJlbmFtZWQgdG8gdmFsaWRhdGVDb3VudGVkT2JqZWN0LgorICAgICAgICBjb3VudE9iamVjdFNp
emUgbm93IHJlcXVpcmVzIHBvaW50ZXIgdG8gb2JqZWN0IGFzIHRoZSBmaXJzdCBhcmd1bWVudC4K
KworICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9y
eUluc3RydW1lbnRhdGlvbkNsaWVudCk6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Y291bnRPYmplY3RTaXplKToKKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjp2YWxpZGF0ZUNvdW50ZWRPYmplY3QpOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZFJhd0J1ZmZlcik6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNzSW5mbzo6
YWRkUHJpdmF0ZUJ1ZmZlcik6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkT2JqZWN0SW1wbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
TGlzdEhhc2hTZXQpOgorICAgICAgICAoV1RGOjo6OnByb2Nlc3MpOgorCiAyMDEyLTEwLTE1ICBB
bmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV1RGOjpm
YXN0RGVsZXRlQWxsVmFsdWVzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNmZTY5MmNmMDBlZWJjOTZhZTc4
MmNkMmNiMWZkZjJlNmE3ZjhhMC4uMzFhN2Q5MGNmOGNlYWZkOTQyNTU0MjkwMWNiNzJmNzM2NzEw
MDYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDEyLTEwLTE2ICBJbHlhIFRpa2hv
bm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBO
TUkgcHJvdmlkZSBkYXRhIGZvciBtaXhpbmcgd2l0aCB0Y21hbGxvYyBoZWFwIGR1bXBzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0NTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb24gaW50ZXJuYWxzIHdlcmUgc2xpZ2h0bHkgY2hhbmdlZC4KKyAgICAgICAgY2hlY2tD
b3VudGVkT2JqZWN0IHdhcyByZW5hbWVkIHRvIHZhbGlkYXRlQ291bnRlZE9iamVjdDsKKyAgICAg
ICAgY291bnRPYmplY3RTaXplIG5vdyBhY2NlcHRzIHB0ciBhcyB0aGUgZmlyc3QgYXJndW1lbnQg
YW5kIHNhdmVzIGl0IGludG8gSGFzaE1hcCBpZiB0aGUgYmluYXJ5IHdhcyByYW4gd2l0aCBIRUFQ
UFJPRklMRSBlbnYgdmFyaWFibGUuCisgICAgICAgIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRp
b24gZG9lcyBzbmFwc2hvdCBhbmQgY2FsbHMgdGhlIGRvd25zdHJlYW0gY29kZSB3aXRoIHRoZSBt
YXAgb2YgY291bnRlZCBvYmplY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNs
aWVudC5oOiBuZXcgZnVuY3Rpb24gd2VyZSBhZGRlZCBJbnNwZWN0b3JDbGllbnQ6OmR1bXBVbnRy
YWNrZWRPYmplY3RzLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRKU0hlYXBJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlcG9ydFJlbmRlclRyZWVJbmZvKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRp
b24pOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OmNvdW50
T2JqZWN0U2l6ZSk6IGNvbGxlY3RzIHRoZSBkYXRhIGZvciBoZWFwIGR1bXBzCisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjp2YWxpZGF0ZUNvdW50ZWRP
YmplY3QpOiB2YWxpZGF0ZXMgY291bnRlZCBvYmplY3RzIHdpdGggc2V0IG9mIGFsbG9jYXRlZCBv
YmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1w
bDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsLmg6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OmNv
dW50ZWRPYmplY3RzKToKKworMjAxMi0xMC0xNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIEluc3RydW1lbnQgSW5z
cGVjdG9yT3ZlcmxheS4gSXQgY29zdHMgdXMgfjlNYiBiZWNhdXNlIGl0IGNyZWF0ZXMgcGFnZSBz
aXplIGNhbnZhcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk5NDI2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZmJlNTA3YThlNWI2Njk2
YzkwMGE2ZDNhMTc2ZWVhNDdhZmRiZDg3Mi4uNDgwMmZlNGFmNjc1ZjljZDEwZjI0ODRkMzE3Mjdm
OGQ2M2U2NTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAor
MjAxMi0xMC0xNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogTk1JIHByb3ZpZGUgZGF0YSBmb3IgbWl4aW5nIHdpdGggdGNt
YWxsb2MgaGVhcCBkdW1wcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk5NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW5zcGVjdG9yQ2xpZW50IEFQSSB3YXMgZXh0ZW5kZWQuIFRoZSBuZXcgbWV0aG9k
IGR1bXBVbmNvdW50ZWRPYmplY3RzIGFjY2VwdHMKKyAgICAgICAgdGhlIG1hcCB3aXRoIGNvdW50
ZWQgb2JqZWN0cyBhcyB0aGUgYXJndW1lbnQgYW5kIGNhbGxzIHRoZSBkb3duc3RyZWFtIGNvZGUg
dG8gZG8gdGhlIGpvYi4KKyAgICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZW1w
dHkuIFRoZSBhY3R1YWwgY29kZSBvbiBjaHJvbWl1bSBzaWRlIHdpbGwgcHJvdmlkZQorICAgICAg
ICB0aGUgZGF0YSB0byB0aGUgaGVhcCBkdW1wIGdlbmVyYXRvci4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJEZXZUb29sc0FnZW50Q2xpZW50Lmg6CisgICAgICAgIChBbGxvY2F0ZWRPYmplY3RWaXNp
dG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudENsaWVudDo6ZHVtcFVuY291
bnRlZE9iamVjdHMpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6ZHVtcFVuY291bnRlZE9iamVjdHMp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5o
OgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYkRldlRv
b2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6
OmdldEFsbG9jYXRlZE9iamVjdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50
SW1wbDo6ZHVtcFVuY291bnRlZE9iamVjdHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoKKyAgICAgICAgKFdlYkRldlRvb2xzQWdlbnRJ
bXBsKToKKwogMjAxMi0xMC0xNSAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgRkFTVF9NT0JJTEVfU0NST0xMSU5HIGZvciBB
bmRyb2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDBiN2MyMTcz
MWQ0M2UxMWMxYzU2MGQ0NzVhMDNhMDI4MTY1NTFjODUuLjU3YjkxMzE5ZWZhNjFjZmQwNzZlMmMw
ZmMzZGQ2MDc1NWI0OTM1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
CkBAIC04Niw5ICs4Niw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKik7CiBjbGFzcyBNZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lbW9yeUluc3Ry
dW1lbnRhdGlvbkNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUo
TWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvdW50T2Jq
ZWN0U2l6ZShjb25zdCB2b2lkKiwgTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CiAgICAg
dmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZh
bGlkYXRlQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgPSAwOwogfTsKIAogY2xhc3MgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uIHsKQEAgLTExMCw5ICsxMTAsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGNvdW50T2JqZWN0U2l6ZShNZW1vcnlPYmplY3RUeXBlIG9i
amVjdFR5cGUsIHNpemVfdCBzaXplKSB7IG1fY2xpZW50LT5jb3VudE9iamVjdFNpemUob2JqZWN0
VHlwZSwgc2l6ZSk7IH0KKyAgICB2b2lkIGNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiBvYmpl
Y3QsIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpIHsgbV9jbGllbnQt
PmNvdW50T2JqZWN0U2l6ZShvYmplY3QsIG9iamVjdFR5cGUsIHNpemUpOyB9CiAgICAgYm9vbCB2
aXNpdGVkKGNvbnN0IHZvaWQqIHBvaW50ZXIpIHsgcmV0dXJuIG1fY2xpZW50LT52aXNpdGVkKHBv
aW50ZXIpOyB9Ci0gICAgdm9pZCBjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCogcG9pbnRl
cikgeyByZXR1cm4gbV9jbGllbnQtPmNoZWNrQ291bnRlZE9iamVjdChwb2ludGVyKTsgfQorICAg
IHZvaWQgdmFsaWRhdGVDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqIHBvaW50ZXIpIHsgcmV0dXJu
IG1fY2xpZW50LT52YWxpZGF0ZUNvdW50ZWRPYmplY3QocG9pbnRlcik7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkZWZlckluc3RydW1lbnRlZFBvaW50ZXIoUGFzc093blB0cjxJbnN0cnVtZW50ZWRQ
b2ludGVyQmFzZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1
bWVudGVkUG9pbnRlcnMoKSA9IDA7CkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIGlmICghYnVmZmVyIHx8IHZpc2l0ZWQoYnVmZmVyKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZSk7Cisg
ICAgICAgIGNvdW50T2JqZWN0U2l6ZShidWZmZXIsIG93bmVyT2JqZWN0VHlwZSwgc2l6ZSk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTT4gdm9pZCBhZGRNZW1iZXIoY29uc3QgTSYgbWVt
YmVyKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3QobWVtYmVyLCBtX29iamVj
dFR5cGUpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFk
ZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5hZGRMaXN0SGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAg
ICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBjb25zdCYgYnVmZmVyLCBzaXplX3Qgc2l6
ZSkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkUmF3QnVmZmVyKGJ1ZmZlciwgbV9vYmpl
Y3RUeXBlLCBzaXplKTsgfQotICAgIHZvaWQgYWRkUHJpdmF0ZUJ1ZmZlcihzaXplX3Qgc2l6ZSkg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKG1fb2JqZWN0VHlwZSwg
c2l6ZSk7IH0KKyAgICB2b2lkIGFkZFByaXZhdGVCdWZmZXIoc2l6ZV90IHNpemUpIHsgbV9tZW1v
cnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZSgwLCBtX29iamVjdFR5cGUsIHNpemUp
OyB9CiAKICAgICB2b2lkIGFkZFdlYWtQb2ludGVyKHZvaWQqKSB7IH0KIApAQCAtMjI0LDcgKzIy
NCw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQq
IGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KCFvYmplY3QgfHwgdmlzaXRlZChvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBjaGVja0NvdW50ZWRPYmplY3Qob2JqZWN0KTsKKyAgICAgICAgdmFsaWRhdGVDb3VudGVkT2Jq
ZWN0KG9iamVjdCk7CiAgICAgICAgIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihhZG9wdFB0cihu
ZXcgSW5zdHJ1bWVudGVkUG9pbnRlcjxUPihvYmplY3QsIG93bmVyT2JqZWN0VHlwZSkpKTsKICAg
ICB9CiB9CkBAIC0yMzIsMjAgKzIzMiwxNiBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RUeQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJ
bXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKLSAgICBpZiAob3du
aW5nVHlwZSA9PSBieVBvaW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkgewotICAgICAgICBjb3Vu
dE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwotICAgICAgICBj
aGVja0NvdW50ZWRPYmplY3Qob2JqZWN0KTsKLSAgICB9CisgICAgaWYgKG93bmluZ1R5cGUgPT0g
YnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpCisgICAgICAgIGNvdW50T2JqZWN0U2l6ZShv
YmplY3QsIG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKICAgICBhZGRPYmplY3RJ
bXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJ
bXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKLSAgICBpZiAob3du
aW5nVHlwZSA9PSBieVBvaW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkgewotICAgICAgICBjb3Vu
dE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwotICAgICAgICBj
aGVja0NvdW50ZWRPYmplY3Qob2JqZWN0KTsKLSAgICB9CisgICAgaWYgKG93bmluZ1R5cGUgPT0g
YnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpCisgICAgICAgIGNvdW50T2JqZWN0U2l6ZShv
YmplY3QsIG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKICAgICBhZGRPYmplY3RJ
bXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsKIH0KIApAQCAt
MjU1LDcgKzI1MSw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNl
dChjb25zdCBMaXN0SGFzaFNldFR5cGUmIGhhc2hTZXQsIE1lbW9yCiAgICAgaWYgKHZpc2l0ZWQo
Jmhhc2hTZXQpKQogICAgICAgICByZXR1cm47CiAgICAgc2l6ZV90IHNpemUgPSAoY29udGVudE9u
bHkgPyAwIDogc2l6ZW9mKExpc3RIYXNoU2V0VHlwZSkpICsgaGFzaFNldC5jYXBhY2l0eSgpICog
c2l6ZW9mKHZvaWQqKSArIGhhc2hTZXQuc2l6ZSgpICogKHNpemVvZih0eXBlbmFtZSBMaXN0SGFz
aFNldFR5cGU6OlZhbHVlVHlwZSkgKyAyICogc2l6ZW9mKHZvaWQqKSk7Ci0gICAgY291bnRPYmpl
Y3RTaXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZSk7CisgICAgY291bnRPYmplY3RTaXplKCZoYXNo
U2V0LCBvd25lck9iamVjdFR5cGUsIHNpemUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpA
QCAtMjYzLDcgKzI1OSw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50
ZWRQb2ludGVyPFQ+Ojpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGlvCiB7CiAgICAgTWVtb3J5
T2JqZWN0SW5mbyBtZW1vcnlPYmplY3RJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlvbiwgbV9vd25l
ck9iamVjdFR5cGUpOwogICAgIHJlcG9ydE1lbW9yeVVzYWdlKG1fcG9pbnRlciwgJm1lbW9yeU9i
amVjdEluZm8pOwotICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKG1l
bW9yeU9iamVjdEluZm8ub2JqZWN0VHlwZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUo
KSk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUobV9wb2ludGVy
LCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFR5cGUoKSwgbWVtb3J5T2JqZWN0SW5mby5vYmplY3RT
aXplKCkpOwogfQogCiAvLyBMaW5rIHRpbWUgZ3VhcmQgZm9yIGNsYXNzZXMgd2l0aCBleHRlcm5h
bCBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCmluZGV4IDJkNGZiM2YyNjEyOWNiOTA0MjkzODhlMDZkMzEyZGQzNWQzMTA1
YTQuLjYzNTZlNGY2MGFjYTc3YzMzNjRjNGVmYWY0MjBjYjhjMjc0YzQ4ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2luY2x1ZGUgIkluc3BlY3RvclN0YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDYgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9p
ZCo+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGR1bXBVbnRyYWNrZWRPYmplY3RzKGNvbnN0IEhh
c2hNYXA8Y29uc3Qgdm9pZCosIHNpemVfdD4mKSB7IH0KIAogICAgIHN0YXRpYyBib29sIGRvRGlz
cGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoUGFnZSogZnJvbnRlbmRQYWdlLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IGJhZGNiNzk1YmVmNjU5YzdjYzhkMjEwOGM0OWViOGVh
MGQ1NTc1OWEuLjU3YzYxOGMyMmIzYjBmZTBkNDhhY2Q1Y2JjYjNiODY5ZTMyMmI5MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApA
QCAtNDM2LDE2ICs0MzYsMTYgQEAgc3RhdGljIHZvaWQgcmVwb3J0SlNIZWFwSW5mbyhXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCYgbWVtb3J5SW5zdHJ1bWVudGEKICAgICBIZWFwSW5m
byBpbmZvOwogICAgIFNjcmlwdEdDRXZlbnQ6OmdldEhlYXBTaXplKGluZm8pOwogCi0gICAgbWVt
b3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZShXZWJDb3JlTWVtb3J5VHlw
ZXM6OkpTSGVhcFVzZWQsIGluZm8udXNlZEpTSGVhcFNpemUpOwotICAgIG1lbW9yeUluc3RydW1l
bnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoV2ViQ29yZU1lbW9yeVR5cGVzOjpKU0hlYXBV
bnVzZWQsIGluZm8udG90YWxKU0hlYXBTaXplIC0gaW5mby51c2VkSlNIZWFwU2l6ZSk7CisgICAg
bWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZSgwLCBXZWJDb3JlTWVt
b3J5VHlwZXM6OkpTSGVhcFVzZWQsIGluZm8udXNlZEpTSGVhcFNpemUpOworICAgIG1lbW9yeUlu
c3RydW1lbnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoMCwgV2ViQ29yZU1lbW9yeVR5cGVz
OjpKU0hlYXBVbnVzZWQsIGluZm8udG90YWxKU0hlYXBTaXplIC0gaW5mby51c2VkSlNIZWFwU2l6
ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlcG9ydFJlbmRlclRyZWVJbmZvKFdURjo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uQ2xpZW50JiBtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQsIFBhZ2UqIHBh
Z2UpCiB7CiAgICAgQXJlbmFTaXplIGFyZW5hU2l6ZSA9IHBhZ2UtPnJlbmRlclRyZWVTaXplKCk7
CiAKLSAgICBtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQuY291bnRPYmplY3RTaXplKFdlYkNv
cmVNZW1vcnlUeXBlczo6UmVuZGVyVHJlZVVzZWQsIGFyZW5hU2l6ZS50cmVlU2l6ZSk7Ci0gICAg
bWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZShXZWJDb3JlTWVtb3J5
VHlwZXM6OlJlbmRlclRyZWVVbnVzZWQsIGFyZW5hU2l6ZS5hbGxvY2F0ZWQgLSBhcmVuYVNpemUu
dHJlZVNpemUpOworICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNp
emUoMCwgV2ViQ29yZU1lbW9yeVR5cGVzOjpSZW5kZXJUcmVlVXNlZCwgYXJlbmFTaXplLnRyZWVT
aXplKTsKKyAgICBtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQuY291bnRPYmplY3RTaXplKDAs
IFdlYkNvcmVNZW1vcnlUeXBlczo6UmVuZGVyVHJlZVVudXNlZCwgYXJlbmFTaXplLmFsbG9jYXRl
ZCAtIGFyZW5hU2l6ZS50cmVlU2l6ZSk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC01NDEsNiArNTQx
LDggQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1
dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24u
YWRkUm9vdE9iamVjdChtZW1vcnlJbnN0cnVtZW50YXRpb24pOwogICAgIG1lbW9yeUluc3RydW1l
bnRhdGlvbi5hZGRSb290T2JqZWN0KG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCk7CiAKKyAg
ICBtX2luc3BlY3RvckNsaWVudC0+ZHVtcFVudHJhY2tlZE9iamVjdHMobWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQ2xpZW50LmNvdW50ZWRPYmplY3RzKCkpOworCiAgICAgTWVtb3J5VXNhZ2VTdGF0c0dl
bmVyYXRvciBzdGF0c0dlbmVyYXRvcigmbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50KTsKICAg
ICBzdGF0c0dlbmVyYXRvci5kdW1wKGNoaWxkcmVuLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCmluZGV4
IGU5M2Q2NmY0ZmFjZGMwNGI5YjllMDU2MTBmZDk0MGYwY2ExMTZhZmEuLjMyZjYzNTY3Y2QxZWZl
NzIyMWIzMDQ5NmJjZThlYjEzZDlhZmY1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKQEAgLTU4LDEzICs1OCwy
MiBAQCBUeXBlTmFtZVRvU2l6ZU1hcCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpz
aXplc01hcCgpIGNvbnN0CiAgICAgcmV0dXJuIHNpemVzTWFwOwogfQogCi12b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbkNsaWVudEltcGw6OmNvdW50T2JqZWN0U2l6ZShNZW1vcnlPYmplY3RUeXBl
IG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGll
bnRJbXBsOjpjb3VudE9iamVjdFNpemUoY29uc3Qgdm9pZCogb2JqZWN0LCBNZW1vcnlPYmplY3RU
eXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQogewogICAgIEFTU0VSVChvYmplY3RUeXBlKTsK
KwogICAgIFR5cGVUb1NpemVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RvdGFsU2l6ZXMuYWRk
KG9iamVjdFR5cGUsIHNpemUpOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gc2l6ZTsKICAgICArK21fdG90YWxDb3VudGVkT2Jq
ZWN0czsKKworICAgIGlmICghY2hlY2tJbnN0cnVtZW50ZWRPYmplY3RzKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgbV9jb3VudGVkT2JqZWN0cy5hZGQo
b2JqZWN0LCBzaXplKTsKKyAgICAgICAgdmFsaWRhdGVDb3VudGVkT2JqZWN0KG9iamVjdCk7Cisg
ICAgfQogfQogCiBib29sIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnZpc2l0ZWQo
Y29uc3Qgdm9pZCogb2JqZWN0KQpAQCAtNzIsNyArODEsNyBAQCBib29sIE1lbW9yeUluc3RydW1l
bnRhdGlvbkNsaWVudEltcGw6OnZpc2l0ZWQoY29uc3Qgdm9pZCogb2JqZWN0KQogICAgIHJldHVy
biAhbV92aXNpdGVkT2JqZWN0cy5hZGQob2JqZWN0KS5pc05ld0VudHJ5OwogfQogCi12b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OmNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2
b2lkKiBvYmplY3QpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnZhbGlk
YXRlQ291bnRlZE9iamVjdChjb25zdCB2b2lkKiBvYmplY3QpCiB7CiAgICAgaWYgKCFjaGVja0lu
c3RydW1lbnRlZE9iamVjdHMoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTEsNiArMTAwLDcgQEAg
dm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnkKICAgICBpbmZvLmFkZE1lbWJlcihtX3RvdGFsU2l6ZXMp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fdmlzaXRlZE9iamVjdHMpOwogICAgIGluZm8uYWRkTWVt
YmVyKG1fYWxsb2NhdGVkT2JqZWN0cyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jb3VudGVkT2Jq
ZWN0cyk7CiB9CiAKIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6cHJvY2Vzc0RlZmVy
cmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgKaW5kZXggOGFmOGQ2MGM1ZDdkMjM1NjFk
MjExOTNjZDNlNzdiYTE5NTZkODAwYS4uY2JlOWUyMDI3YWFmNTU4YTBiNjcyZDFhNzdhMDVmNzQx
N2U1M2I1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbC5oCkBAIC00OCw2ICs0OCw4IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIHNpemVfdD4gVHlwZU5hbWVUb1NpemVNYXA7CiAKIGNsYXNzIE1lbW9yeUluc3RydW1lbnRh
dGlvbkNsaWVudEltcGwgOiBwdWJsaWMgV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQg
ewogcHVibGljOgorICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCB2b2lkKiwgc2l6ZV90PiBPYmpl
Y3RUb1NpemVNYXA7CisKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsKCkKICAg
ICAgICAgOiBtX3RvdGFsQ291bnRlZE9iamVjdHMoMCkKICAgICAgICAgLCBtX3RvdGFsT2JqZWN0
c05vdEluQWxsb2NhdGVkU2V0KDApCkBAIC02OSwxNSArNzEsMTYgQEAgcHVibGljOgogCiAgICAg
VHlwZU5hbWVUb1NpemVNYXAgc2l6ZXNNYXAoKSBjb25zdDsKICAgICBWaXNpdGVkT2JqZWN0cyYg
YWxsb2NhdGVkT2JqZWN0cygpIHsgcmV0dXJuIG1fYWxsb2NhdGVkT2JqZWN0czsgfQorICAgIGNv
bnN0IE9iamVjdFRvU2l6ZU1hcCYgY291bnRlZE9iamVjdHMoKSB7IHJldHVybiBtX2NvdW50ZWRP
YmplY3RzOyB9CiAKICAgICBib29sIGNoZWNrSW5zdHJ1bWVudGVkT2JqZWN0cygpIGNvbnN0IHsg
cmV0dXJuICFtX2FsbG9jYXRlZE9iamVjdHMuaXNFbXB0eSgpOyB9CiAgICAgc2l6ZV90IHZpc2l0
ZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV92aXNpdGVkT2JqZWN0cy5zaXplKCk7IH0KICAg
ICBzaXplX3QgdG90YWxDb3VudGVkT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb3Vu
dGVkT2JqZWN0czsgfQogICAgIHNpemVfdCB0b3RhbE9iamVjdHNOb3RJbkFsbG9jYXRlZFNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fdG90YWxPYmplY3RzTm90SW5BbGxvY2F0ZWRTZXQ7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKGNvbnN0IHZvaWQqLCBN
ZW1vcnlPYmplY3RUeXBlLCBzaXplX3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB2aXNp
dGVkKGNvbnN0IHZvaWQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tDb3VudGVk
T2JqZWN0KGNvbnN0IHZvaWQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVD
b3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqKSBPVkVSUklERTsKIAogICAgIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCkBAIC04Niw2ICs4OSw3IEBAIHBy
aXZhdGU6CiAgICAgVHlwZVRvU2l6ZU1hcCBtX3RvdGFsU2l6ZXM7CiAgICAgVmlzaXRlZE9iamVj
dHMgbV92aXNpdGVkT2JqZWN0czsKICAgICBWaXNpdGVkT2JqZWN0cyBtX2FsbG9jYXRlZE9iamVj
dHM7CisgICAgT2JqZWN0VG9TaXplTWFwIG1fY291bnRlZE9iamVjdHM7CiAgICAgc2l6ZV90IG1f
dG90YWxDb3VudGVkT2JqZWN0czsKICAgICBzaXplX3QgbV90b3RhbE9iamVjdHNOb3RJbkFsbG9j
YXRlZFNldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZUb29sc0FnZW50Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZUb29sc0FnZW50Q2xpZW50LmgKaW5kZXggN2FjMmM3Yzk3ZTdmZjhjZTczZGZlYTFmZmE2
M2FiZjVmYTgxODAwYi4uMGNmZjJiYmUyZTc4MmYzNDIyNWYzZWE1N2NiYTRmN2VhMmQxODkxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xz
QWdlbnRDbGllbnQuaApAQCAtNjMsMTEgKzYzLDEyIEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIEFs
bG9jYXRlZE9iamVjdFZpc2l0b3IgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCBib29s
IHZpc2l0T2JqZWN0KGNvbnN0IHZvaWQqIHB0cikgPSAwOworICAgICAgICB2aXJ0dWFsIHNpemVf
dCB2aXNpdE9iamVjdChjb25zdCB2b2lkKiBwdHIpID0gMDsKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgfkFsbG9jYXRlZE9iamVjdFZpc2l0b3IoKSB7IH0KICAgICB9OwogICAgIHZp
cnR1YWwgdm9pZCB2aXNpdEFsbG9jYXRlZE9iamVjdHMoQWxsb2NhdGVkT2JqZWN0VmlzaXRvciop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkdW1wVW5jb3VudGVkT2JqZWN0cyhBbGxvY2F0ZWRPYmpl
Y3RWaXNpdG9yKikgeyB9CiAKIHByb3RlY3RlZDoKICAgICB+V2ViRGV2VG9vbHNBZ2VudENsaWVu
dCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGll
bnRJbXBsLmNwcAppbmRleCA0MDJiODY5NWM5ZDE2OGI1YzEyNjFkNTc5NTgxNDgwYThjYjQwNmQ1
Li5kMzk3YzU0YTFmOWM4YzUwZDA2OGJjYTU5MzRkMGU0MDk4ZWQ2NGVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcApAQCAtMTY5
LDYgKzE2OSwxMiBAQCB2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OmdldEFsbG9jYXRlZE9iamVj
dHMoSGFzaFNldDxjb25zdCB2b2lkKj4mIHNldCkKICAgICAgICAgYWdlbnQtPmdldEFsbG9jYXRl
ZE9iamVjdHMoc2V0KTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpkdW1wVW5jb3Vu
dGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+JiBtYXApCit7Cisg
ICAgaWYgKFdlYkRldlRvb2xzQWdlbnRJbXBsKiBhZ2VudCA9IGRldlRvb2xzQWdlbnQoKSkKKyAg
ICAgICAgYWdlbnQtPmR1bXBVbmNvdW50ZWRPYmplY3RzKG1hcCk7Cit9CisKIHZvaWQgSW5zcGVj
dG9yQ2xpZW50SW1wbDo6d2lsbFByb2Nlc3NUYXNrKCkKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxQcm9jZXNzVGFzayhtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKaW5k
ZXggOWUxZWEzNzBlNDczMWVlNjg1MWUwYTdjNjVjZDMyMGI2ODNmYzEyYS4uYTg3ZWU0MmY1ZDVm
MDU5ZDAzZTU2N2VmMGE5YmFkN2EzM2MwZTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+Jik7
CisgICAgdmlydHVhbCB2b2lkIGR1bXBVbmNvdW50ZWRPYmplY3RzKGNvbnN0IEhhc2hNYXA8Y29u
c3Qgdm9pZCosIHNpemVfdD4mKTsKIAogcHJpdmF0ZToKICAgICAvLyBXZWJUaHJlYWQ6OlRhc2tP
YnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNB
Z2VudEltcGwuY3BwCmluZGV4IDdmMzYyMDM2Yjk3OTMxNDVmMDBhMzFkODMyOTI2OTM1MWVjMmU0
YmYuLjVlYTU5ZmY2ZGU3MGE1Y2I1YmU1ODAwY2Q4NDAzZDFmZmFhNDRmY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAg
LTQ1OSwyNiArNDU5LDE0IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmdldEFsbG9jYXRl
ZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4mIHNldCkKIHsKICAgICBjbGFzcyBDb3VudGlu
Z1Zpc2l0b3IgOiBwdWJsaWMgV2ViRGV2VG9vbHNBZ2VudENsaWVudDo6QWxsb2NhdGVkT2JqZWN0
VmlzaXRvciB7CiAgICAgcHVibGljOgotICAgICAgICBDb3VudGluZ1Zpc2l0b3IoKSA6IG1fdG90
YWxPYmplY3RzQ291bnQoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCB2aXNpdE9iamVjdChjb25zdCB2b2lkKiBwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
ICsrbV90b3RhbE9iamVjdHNDb3VudDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIHNpemVfdCB0b3RhbE9iamVjdHNDb3VudCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBtX3RvdGFsT2JqZWN0c0NvdW50OwotICAgICAgICB9CisgICAgICAgIENv
dW50aW5nVmlzaXRvcigpIDogbV90b3RhbE9iamVjdHNDb3VudCgwKSB7IH0KKyAgICAgICAgdmly
dHVhbCBzaXplX3QgdmlzaXRPYmplY3QoY29uc3Qgdm9pZCogcHRyKSB7IHJldHVybiArK21fdG90
YWxPYmplY3RzQ291bnQ7IH0KKyAgICAgICAgc2l6ZV90IHRvdGFsT2JqZWN0c0NvdW50KCkgeyBy
ZXR1cm4gbV90b3RhbE9iamVjdHNDb3VudDsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc2l6
ZV90IG1fdG90YWxPYmplY3RzQ291bnQ7CiAgICAgfTsKIAotICAgIENvdW50aW5nVmlzaXRvciBj
b3VudGVyOwotICAgIG1fY2xpZW50LT52aXNpdEFsbG9jYXRlZE9iamVjdHMoJmNvdW50ZXIpOwot
CiAgICAgY2xhc3MgUG9pbnRlckNvbGxlY3RvciA6IHB1YmxpYyBXZWJEZXZUb29sc0FnZW50Q2xp
ZW50OjpBbGxvY2F0ZWRPYmplY3RWaXNpdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxp
Y2l0IFBvaW50ZXJDb2xsZWN0b3Ioc2l6ZV90IG1heE9iamVjdHNDb3VudCkKQEAgLTQ4OCwxOCAr
NDc2LDE1IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmdldEFsbG9jYXRlZE9iamVjdHMo
SGFzaFNldDxjb25zdCB2b2lkKj4mIHNldCkKICAgICAgICAgICAgICwgbV9wb2ludGVycyhuZXcg
Y29uc3Qgdm9pZCpbbWF4T2JqZWN0c0NvdW50XSkKICAgICAgICAgewogICAgICAgICB9Ci0gICAg
ICAgIH5Qb2ludGVyQ29sbGVjdG9yKCkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlW10g
bV9wb2ludGVyczsKLSAgICAgICAgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRPYmplY3Qo
Y29uc3Qgdm9pZCogcHRyKQorICAgICAgICB+UG9pbnRlckNvbGxlY3RvcigpIHsgZGVsZXRlW10g
bV9wb2ludGVyczsgfQorICAgICAgICB2aXJ0dWFsIHNpemVfdCB2aXNpdE9iamVjdChjb25zdCB2
b2lkKiBwdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2luZGV4ID09IG1fbWF4T2Jq
ZWN0c0NvdW50KSB7CiAgICAgICAgICAgICAgICAgbV9zdWNjZXNzID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbV9wb2ludGVyc1ttX2luZGV4KytdID0gcHRyOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKICAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgc3VjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VzczsgfQpA
QCAtNTE3LDYgKzUwMiw5IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmdldEFsbG9jYXRl
ZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4mIHNldCkKICAgICAgICAgY29uc3Qgdm9pZCoq
IG1fcG9pbnRlcnM7CiAgICAgfTsKIAorICAgIENvdW50aW5nVmlzaXRvciBjb3VudGVyOworICAg
IG1fY2xpZW50LT52aXNpdEFsbG9jYXRlZE9iamVjdHMoJmNvdW50ZXIpOworCiAgICAgLy8gRG91
YmxlIHNpemUgdG8gYWxsb3cgcm9vbSBmb3IgYWxsIG9iamVjdHMgdGhhdCBtYXkgaGF2ZSBiZWVu
IGFsbG9jYXRlZAogICAgIC8vIHNpbmNlIHdlIGNvdW50ZWQgdGhlbS4KICAgICBzaXplX3QgZXN0
aW1hdGVkTWF4T2JqZWN0c0NvdW50ID0gY291bnRlci50b3RhbE9iamVjdHNDb3VudCgpICogMjsK
QEAgLTUzMSw2ICs1MTksMjUgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6Z2V0QWxsb2Nh
dGVkT2JqZWN0cyhIYXNoU2V0PGNvbnN0IHZvaWQqPiYgc2V0KQogICAgIH0KIH0KIAordm9pZCBX
ZWJEZXZUb29sc0FnZW50SW1wbDo6ZHVtcFVuY291bnRlZE9iamVjdHMoY29uc3QgSGFzaE1hcDxj
b25zdCB2b2lkKiwgc2l6ZV90PiYgbWFwKQoreworICAgIGNsYXNzIENvdW50ZWRPYmplY3RzQ2hl
Y2tlciA6IHB1YmxpYyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OjpBbGxvY2F0ZWRPYmplY3RWaXNp
dG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENvdW50ZWRPYmplY3RzQ2hlY2tlcihjb25zdCBI
YXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+JiBtYXApIDogbV9tYXAobWFwKSB7IH0KKyAgICAg
ICAgdmlydHVhbCBzaXplX3QgdmlzaXRPYmplY3QoY29uc3Qgdm9pZCogcHRyKQorICAgICAgICB7
CisgICAgICAgICAgICBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+Ojpjb25zdF9pdGVyYXRv
ciBpID0gbV9tYXAuZmluZChwdHIpOworICAgICAgICAgICAgcmV0dXJuIGkgPT0gbV9tYXAuZW5k
KCkgPyAwIDogaS0+dmFsdWU7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGNv
bnN0IEhhc2hNYXA8Y29uc3Qgdm9pZCosIHNpemVfdD4mIG1fbWFwOworICAgIH07CisKKyAgICBD
b3VudGVkT2JqZWN0c0NoZWNrZXIgY2hlY2tlcihtYXApOworICAgIG1fY2xpZW50LT5kdW1wVW5j
b3VudGVkT2JqZWN0cygmY2hlY2tlcik7Cit9CisKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6
OmRpc3BhdGNoT25JbnNwZWN0b3JCYWNrZW5kKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBpbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCht
ZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRv
b2xzQWdlbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5oCmluZGV4IDZhOTY2MzEyNzUxYzRiZmU0MTMwMjUyZTFjMDY5NTMxNDhjNzVmNGIu
LjFmOTY4ZjI4OTMxN2E2OTFiZDkwOTMzMDhlOGFlMzAzZGI2ODM5MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApAQCAtMTA2LDYg
KzEwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXV0b1pvb21QYWdlVG9GaXRXaWR0
aCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFsbG9jYXRlZE9iamVjdHMoSGFzaFNldDxjb25z
dCB2b2lkKj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcFVuY291bnRlZE9iamVjdHMoY29uc3Qg
SGFzaE1hcDxjb25zdCB2b2lkKiwgc2l6ZV90PiYpOwogCiAgICAgaW50IGhvc3RJZCgpIHsgcmV0
dXJuIG1faG9zdElkOyB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAxZjkwZDFiODMyNzJlMjVkM2E4N2RhNTY2MzMxYjg3NGUzMDFiOGExLi4x
ODkyNzM4MjdkNjM1Y2NiYjFjOTBmOGU1ODg3MWFjMzg0NmEzZTkyIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MTAtMTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IE5NSSBwcm92aWRlIGRhdGEgZm9yIG1peGluZyB3aXRoIHRjbWFsbG9j
IGhlYXAgZHVtcHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTQ1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGNoZWNrQ291bnRlZE9iamVjdCB3YXMgcmVuYW1lZCB0byB2YWxpZGF0ZUNvdW50ZWRPYmpl
Y3QuCisgICAgICAgIGNvdW50T2JqZWN0U2l6ZSBub3cgcmVxdWlyZXMgcG9pbnRlciB0byBvYmpl
Y3QgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHA6CisKIDIwMTItMTAtMTUgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZM
XVtXSzJdIERpc3BsYXkgcGFnZSBmYXZpY29ucyBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25U
ZXN0LmNwcAppbmRleCA3ODQ3ZDdkMjY1M2Q2ZDAwMDA4NDNlZGI5ZGU3ZWE0Yjk3NjllN2Q4Li45
MTkwMzRjYjRkZTM4OGRkZDAxNjUyMmM3NmZjOWFmNDZiYTk0NGY2IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25U
ZXN0LmNwcApAQCAtOTUsMTQgKzk1LDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY2xhc3Mg
Q2xpZW50IDogcHVibGljIFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0
VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvdW50
T2JqZWN0U2l6ZShjb25zdCB2b2lkKiwgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXpl
X3Qgc2l6ZSkKICAgICAgICAgewogICAgICAgICAgICAgVHlwZVRvU2l6ZU1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fdG90YWxTaXplcy5hZGQob2JqZWN0VHlwZSwgc2l6ZSk7CiAgICAgICAgICAg
ICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgKz0gc2l6ZTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRl
ZChjb25zdCB2b2lkKiBvYmplY3QpIHsgcmV0dXJuICFtX3Zpc2l0ZWRPYmplY3RzLmFkZChvYmpl
Y3QpLmlzTmV3RW50cnk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGNoZWNrQ291bnRlZE9iamVj
dChjb25zdCB2b2lkKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZUNvdW50ZWRP
YmplY3QoY29uc3Qgdm9pZCopIHsgfQogCiAgICAgICAgIHNpemVfdCB2aXNpdGVkT2JqZWN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlzaXRlZE9iamVjdHMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVf
dCB0b3RhbFNpemUoY29uc3QgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169193</attachid>
            <date>2012-10-17 09:08:49 -0700</date>
            <delta_ts>2012-10-17 09:18:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99457-20121017200735.patch</filename>
            <type>text/plain</type>
            <size>23189</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIyNDhkYTRmNjRlYmZlYzRjOWQ2Yzcx
MGM1YzMyOGUyZTg3OWQ0YTkuLjhjMmQzMmI0YzA3MTFlYTliNGYzODgyNGFiM2UxNmE2ZTNkOGM2
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMTAtMTcgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBwcm92aWRl
IGRhdGEgZm9yIG1peGluZyB3aXRoIHRjbWFsbG9jIGhlYXAgZHVtcHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQ1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvdW50T2JqZWN0U2l6ZSBub3cgYWNj
ZXB0cyBwdHIgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBzYXZlcyBpdCBpbnRvIEhhc2hNYXAg
aWYgdGhlIGJpbmFyeSB3YXMgcmFuIHdpdGggSEVBUFBST0ZJTEUgZW52IHZhcmlhYmxlLgorICAg
ICAgICBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uIGRvZXMgc25hcHNob3QgYW5kIGNhbGxz
IHRoZSBkb3duc3RyZWFtIGNvZGUgd2l0aCB0aGUgbWFwIG9mIGNvdW50ZWQgb2JqZWN0cy4KKwor
ICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9yeUlu
c3RydW1lbnRhdGlvbkNsaWVudCk6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Y291bnRPYmplY3RTaXplKToKKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRSYXdCdWZmZXIpOgorICAgICAgICAoV1RGOjpNZW1vcnlDbGFzc0luZm86OmFkZFByaXZh
dGVCdWZmZXIpOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVj
dEltcGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZExpc3RIYXNo
U2V0KToKKyAgICAgICAgKFdURjo6Ojpwcm9jZXNzKToKKwogMjAxMi0xMC0xNiAgTWljaGFlbCBT
YWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgV1RGX1VTRV84QklU
X1RFWFRSVU4gdG8gRU5BQkxFXzhCSVRfVEVYVFJVTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4MmZiMzNmMzky
OWI5ZWU1NTc3OTkzMDAyODNlNmY2ZDdiNzJlZTguLjMxOTFkOTM0Y2MwZjJlZjQzNGI1Zjc1NTZi
NDhjNGU4Y2M0NDA1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0NSBAQAogMjAxMi0xMC0xNyAg
SWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogTk1JIHByb3ZpZGUgZGF0YSBmb3IgbWl4aW5nIHdpdGggdGNtYWxsb2MgaGVhcCBk
dW1wcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5
NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgY291
bnRPYmplY3RTaXplIG5vdyBhY2NlcHRzIHB0ciBhcyB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHNh
dmVzIGl0IGludG8gSGFzaE1hcCBpZiB0aGUgYmluYXJ5IHdhcyByYW4gd2l0aCBIRUFQUFJPRklM
RSBlbnYgdmFyaWFibGUuCisgICAgICAgIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24gZG9l
cyBzbmFwc2hvdCBhbmQgY2FsbHMgdGhlIGRvd25zdHJlYW0gY29kZSB3aXRoIHRoZSBtYXAgb2Yg
Y291bnRlZCBvYmplY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpkdW1wVW5jb3VudGVkT2JqZWN0
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcG9ydEpTSGVhcEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0
UmVuZGVyVHJlZUluZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbik6CisgICAg
ICAgICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6Y291bnRPYmplY3RTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbC5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpjb3VudGVk
T2JqZWN0cyk6CisKKzIwMTItMTAtMTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOiBuZXcgZnVu
Y3Rpb24gd2VyZSBhZGRlZCBJbnNwZWN0b3JDbGllbnQ6OmR1bXBVbnRyYWNrZWRPYmplY3RzLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBvcnRKU0hlYXBJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFJlbmRl
clRyZWVJbmZvKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OmNvdW50T2JqZWN0U2l6ZSk6IGNv
bGxlY3RzIHRoZSBkYXRhIGZvciBoZWFwIGR1bXBzCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjp2YWxpZGF0ZUNvdW50ZWRPYmplY3QpOiB2YWxpZGF0
ZXMgY291bnRlZCBvYmplY3RzIHdpdGggc2V0IG9mIGFsbG9jYXRlZCBvYmplY3RzLgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmg6
CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OmNvdW50ZWRPYmplY3RzKToK
KworMjAxMi0xMC0xNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisK
ICAgICAgICAgVW5yZXZpZXdlZCBmaXggZm9yIEltYWdlU291cmNlQ0cuCiAKICAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggNGIwNTlhYTY4NWJmZDJlYmQxZTAwZjY4ZTEwZTkzOThlMGNjZjFjZi4uOGE2
NmYxZmE5NDViYjBkODc3ZTBiOGVmOGFmM2EyZWRiNjA5Y2ZiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0xNyAgSWx5YSBUaWtob25vdnNreSAg
PGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIHByb3Zp
ZGUgZGF0YSBmb3IgbWl4aW5nIHdpdGggdGNtYWxsb2MgaGVhcCBkdW1wcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NDU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW1iZWRkZXIncyBjb2RlIHdyYXBz
IHRoZSBtYXAgd2l0aCBjb3VudGVkIG9iamVjdHMgaW5mbyBpbnRvIE9iamVjdEluZm9Qcm92aWRl
cgorICAgICAgICBhbmQgZm9yY2VzIGRvd25zdHJlYW0gY29kZSB0byBtYWtlIHRjbWFsbG9jIGhl
YXAgc25hcHNob3QuCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGVtcHR5
LgorCisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaDoKKyAgICAgICAg
KE9iamVjdEluZm9Qcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRD
bGllbnQ6Ok9iamVjdEluZm9Qcm92aWRlcjo6fk9iamVjdEluZm9Qcm92aWRlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OmR1bXBVbmNvdW50ZWRPYmplY3RzKToK
KyAgICAgICAgKFdlYkRldlRvb2xzQWdlbnRDbGllbnQpOgorICAgICAgICAqIHNyYy9JbnNwZWN0
b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6
ZHVtcFVuY291bnRlZE9iamVjdHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMv
SW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50SW1wbCk6Cisg
ICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6OmdldEFsbG9jYXRlZE9iamVjdHMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZHVtcFVuY291bnRlZE9iamVjdHMpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoKKyAgICAg
ICAgKFdlYkRldlRvb2xzQWdlbnRJbXBsKToKKwogMjAxMi0xMC0xNyAgS2Vpc2hpIEhhdHRvcmkg
IDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBMb2NhbGl6ZWQgZGF0ZSBzaG91bGQgYmUg
YmFzZWQgb24gTERNTApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAw
YjdjMjE3MzFkNDNlMTFjMWM1NjBkNDc1YTAzYTAyODE2NTUxYzg1Li41ZjkzN2JjNjI0MmRiNmVi
ZjQzMWNkYWY2MmI5YzE3MDQwZDI4ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb24uaApAQCAtODYsNyArODYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyopOwogY2xhc3Mg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmpl
Y3RTaXplKE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b3VudE9iamVjdFNpemUoY29uc3Qgdm9pZCosIE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgPSAwOwogfTsKQEAgLTExMCw3
ICsxMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNvdW50
T2JqZWN0U2l6ZShNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKSB7IG1f
Y2xpZW50LT5jb3VudE9iamVjdFNpemUob2JqZWN0VHlwZSwgc2l6ZSk7IH0KKyAgICB2b2lkIGNv
dW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0
VHlwZSwgc2l6ZV90IHNpemUpIHsgbV9jbGllbnQtPmNvdW50T2JqZWN0U2l6ZShvYmplY3QsIG9i
amVjdFR5cGUsIHNpemUpOyB9CiAgICAgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqIHBvaW50ZXIp
IHsgcmV0dXJuIG1fY2xpZW50LT52aXNpdGVkKHBvaW50ZXIpOyB9CiAgICAgdm9pZCBjaGVja0Nv
dW50ZWRPYmplY3QoY29uc3Qgdm9pZCogcG9pbnRlcikgeyByZXR1cm4gbV9jbGllbnQtPmNoZWNr
Q291bnRlZE9iamVjdChwb2ludGVyKTsgfQogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8IHZpc2l0ZWQoYnVmZmVyKSkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgc2l6
ZSk7CisgICAgICAgIGNvdW50T2JqZWN0U2l6ZShidWZmZXIsIG93bmVyT2JqZWN0VHlwZSwgc2l6
ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTE5OSw3ICsxOTksNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTT4gdm9pZCBhZGRNZW1iZXIoY29uc3Qg
TSYgbWVtYmVyKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3QobWVtYmVyLCBt
X29iamVjdFR5cGUpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2
b2lkIGFkZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5hZGRMaXN0SGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7
IH0KICAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBjb25zdCYgYnVmZmVyLCBzaXpl
X3Qgc2l6ZSkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkUmF3QnVmZmVyKGJ1ZmZlciwg
bV9vYmplY3RUeXBlLCBzaXplKTsgfQotICAgIHZvaWQgYWRkUHJpdmF0ZUJ1ZmZlcihzaXplX3Qg
c2l6ZSkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKG1fb2JqZWN0
VHlwZSwgc2l6ZSk7IH0KKyAgICB2b2lkIGFkZFByaXZhdGVCdWZmZXIoc2l6ZV90IHNpemUpIHsg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZSgwLCBtX29iamVjdFR5cGUs
IHNpemUpOyB9CiAKICAgICB2b2lkIGFkZFdlYWtQb2ludGVyKHZvaWQqKSB7IH0KIApAQCAtMjMy
LDIwICsyMzIsMTYgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwo
Y29uc3QgVCogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHkKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25Q
dHI8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7Ci0gICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQ
b2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpIHsKLSAgICAgICAgY291bnRPYmplY3RTaXplKG93
bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKLSAgICAgICAgY2hlY2tDb3VudGVkT2Jq
ZWN0KG9iamVjdCk7Ci0gICAgfQorICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlciAmJiAh
dmlzaXRlZChvYmplY3QpKQorICAgICAgICBjb3VudE9iamVjdFNpemUob2JqZWN0LCBvd25lck9i
amVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CiAgICAgYWRkT2JqZWN0SW1wbChvYmplY3QtPmdl
dCgpLCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBSZWZQ
dHI8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7Ci0gICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQ
b2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpIHsKLSAgICAgICAgY291bnRPYmplY3RTaXplKG93
bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKLSAgICAgICAgY2hlY2tDb3VudGVkT2Jq
ZWN0KG9iamVjdCk7Ci0gICAgfQorICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlciAmJiAh
dmlzaXRlZChvYmplY3QpKQorICAgICAgICBjb3VudE9iamVjdFNpemUob2JqZWN0LCBvd25lck9i
amVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CiAgICAgYWRkT2JqZWN0SW1wbChvYmplY3QtPmdl
dCgpLCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7CiB9CiAKQEAgLTI1NSw3ICsyNTEsNyBA
QCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhh
c2hTZXRUeXBlJiBoYXNoU2V0LCBNZW1vcgogICAgIGlmICh2aXNpdGVkKCZoYXNoU2V0KSkKICAg
ICAgICAgcmV0dXJuOwogICAgIHNpemVfdCBzaXplID0gKGNvbnRlbnRPbmx5ID8gMCA6IHNpemVv
ZihMaXN0SGFzaFNldFR5cGUpKSArIGhhc2hTZXQuY2FwYWNpdHkoKSAqIHNpemVvZih2b2lkKikg
KyBoYXNoU2V0LnNpemUoKSAqIChzaXplb2YodHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlOjpWYWx1
ZVR5cGUpICsgMiAqIHNpemVvZih2b2lkKikpOwotICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9i
amVjdFR5cGUsIHNpemUpOworICAgIGNvdW50T2JqZWN0U2l6ZSgmaGFzaFNldCwgb3duZXJPYmpl
Y3RUeXBlLCBzaXplKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTI2Myw3ICsyNTks
NyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlcjxUPjo6
cHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpbwogewogICAgIE1lbW9yeU9iamVjdEluZm8gbWVt
b3J5T2JqZWN0SW5mbyhtZW1vcnlJbnN0cnVtZW50YXRpb24sIG1fb3duZXJPYmplY3RUeXBlKTsK
ICAgICByZXBvcnRNZW1vcnlVc2FnZShtX3BvaW50ZXIsICZtZW1vcnlPYmplY3RJbmZvKTsKLSAg
ICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShtZW1vcnlPYmplY3RJbmZv
Lm9iamVjdFR5cGUoKSwgbWVtb3J5T2JqZWN0SW5mby5vYmplY3RTaXplKCkpOworICAgIG1lbW9y
eUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKG1fcG9pbnRlciwgbWVtb3J5T2JqZWN0
SW5mby5vYmplY3RUeXBlKCksIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0U2l6ZSgpKTsKIH0KIAog
Ly8gTGluayB0aW1lIGd1YXJkIGZvciBjbGFzc2VzIHdpdGggZXh0ZXJuYWwgbWVtb3J5IGluc3Ry
dW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApp
bmRleCAyZDRmYjNmMjYxMjljYjkwNDI5Mzg4ZTA2ZDMxMmRkMzVkMzEwNWE0Li5lNDdlNGIzYTRk
NDYwYWExY2JmOTQ4MmI0MTdhODVmOWU2M2EyNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JTdGF0ZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNGcmFtZUluc3RydW1lbnRhdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0QWxsb2NhdGVkT2JqZWN0cyhIYXNoU2V0PGNvbnN0IHZvaWQqPiYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkdW1wVW5jb3VudGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZv
aWQqLCBzaXplX3Q+JikgeyB9CiAKICAgICBzdGF0aWMgYm9vbCBkb0Rpc3BhdGNoTWVzc2FnZU9u
RnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcAppbmRleCBiYWRjYjc5NWJlZjY1OWM3Y2M4ZDIxMDhjNDllYjhlYTBkNTU3NTlhLi4xMGFj
MDU1MDJhY2UzMTQ3NDYzNzg0ZTA2ZmZlMDM1MTE1OGVkNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQzNiwxNiArNDM2
LDE2IEBAIHN0YXRpYyB2b2lkIHJlcG9ydEpTSGVhcEluZm8oV1RGOjpNZW1vcnlJbnN0cnVtZW50
YXRpb25DbGllbnQmIG1lbW9yeUluc3RydW1lbnRhCiAgICAgSGVhcEluZm8gaW5mbzsKICAgICBT
Y3JpcHRHQ0V2ZW50OjpnZXRIZWFwU2l6ZShpbmZvKTsKIAotICAgIG1lbW9yeUluc3RydW1lbnRh
dGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoV2ViQ29yZU1lbW9yeVR5cGVzOjpKU0hlYXBVc2Vk
LCBpbmZvLnVzZWRKU0hlYXBTaXplKTsKLSAgICBtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQu
Y291bnRPYmplY3RTaXplKFdlYkNvcmVNZW1vcnlUeXBlczo6SlNIZWFwVW51c2VkLCBpbmZvLnRv
dGFsSlNIZWFwU2l6ZSAtIGluZm8udXNlZEpTSGVhcFNpemUpOworICAgIG1lbW9yeUluc3RydW1l
bnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoMCwgV2ViQ29yZU1lbW9yeVR5cGVzOjpKU0hl
YXBVc2VkLCBpbmZvLnVzZWRKU0hlYXBTaXplKTsKKyAgICBtZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnQuY291bnRPYmplY3RTaXplKDAsIFdlYkNvcmVNZW1vcnlUeXBlczo6SlNIZWFwVW51c2Vk
LCBpbmZvLnRvdGFsSlNIZWFwU2l6ZSAtIGluZm8udXNlZEpTSGVhcFNpemUpOwogfQogCiBzdGF0
aWMgdm9pZCByZXBvcnRSZW5kZXJUcmVlSW5mbyhXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNs
aWVudCYgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LCBQYWdlKiBwYWdlKQogewogICAgIEFy
ZW5hU2l6ZSBhcmVuYVNpemUgPSBwYWdlLT5yZW5kZXJUcmVlU2l6ZSgpOwogCi0gICAgbWVtb3J5
SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZShXZWJDb3JlTWVtb3J5VHlwZXM6
OlJlbmRlclRyZWVVc2VkLCBhcmVuYVNpemUudHJlZVNpemUpOwotICAgIG1lbW9yeUluc3RydW1l
bnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoV2ViQ29yZU1lbW9yeVR5cGVzOjpSZW5kZXJU
cmVlVW51c2VkLCBhcmVuYVNpemUuYWxsb2NhdGVkIC0gYXJlbmFTaXplLnRyZWVTaXplKTsKKyAg
ICBtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQuY291bnRPYmplY3RTaXplKDAsIFdlYkNvcmVN
ZW1vcnlUeXBlczo6UmVuZGVyVHJlZVVzZWQsIGFyZW5hU2l6ZS50cmVlU2l6ZSk7CisgICAgbWVt
b3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZSgwLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OlJlbmRlclRyZWVVbnVzZWQsIGFyZW5hU2l6ZS5hbGxvY2F0ZWQgLSBhcmVuYVNpemUu
dHJlZVNpemUpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtNTQxLDYgKzU0MSw4IEBAIHZvaWQgSW5z
cGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJp
bmcqLCBSZWZQdHI8SW5zCiAgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLmFkZFJvb3RPYmplY3Qo
bWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsKICAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24uYWRkUm9v
dE9iamVjdChtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQpOwogCisgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmR1bXBVbmNvdW50ZWRPYmplY3RzKG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5j
b3VudGVkT2JqZWN0cygpKTsKKwogICAgIE1lbW9yeVVzYWdlU3RhdHNHZW5lcmF0b3Igc3RhdHNH
ZW5lcmF0b3IoJm1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCk7CiAgICAgc3RhdHNHZW5lcmF0
b3IuZHVtcChjaGlsZHJlbi5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcAppbmRleCBlOTNkNjZmNGZhY2Rj
MDRiOWI5ZTA1NjEwZmQ5NDBmMGNhMTE2YWZhLi4yMGQxNmNiMWUwM2MyNTdiOTg3MzdiMzQ5NmNj
OGZmNWUxOGY1ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01l
bW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCkBAIC01OCwxMyArNTgsMjIgQEAgVHlwZU5hbWVU
b1NpemVNYXAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6c2l6ZXNNYXAoKSBjb25z
dAogICAgIHJldHVybiBzaXplc01hcDsKIH0KIAotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnRJbXBsOjpjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBz
aXplX3Qgc2l6ZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6Y291bnRP
YmplY3RTaXplKGNvbnN0IHZvaWQqIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBl
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBBU1NFUlQob2JqZWN0VHlwZSk7CisKICAgICBUeXBlVG9T
aXplTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90b3RhbFNpemVzLmFkZChvYmplY3RUeXBlLCBz
aXplKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlICs9IHNpemU7CiAgICAgKyttX3RvdGFsQ291bnRlZE9iamVjdHM7CisKKyAgICBp
ZiAoIWNoZWNrSW5zdHJ1bWVudGVkT2JqZWN0cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAob2JqZWN0KSB7CisgICAgICAgIG1fY291bnRlZE9iamVjdHMuYWRkKG9iamVjdCwgc2l6ZSk7
CisgICAgICAgIGNoZWNrQ291bnRlZE9iamVjdChvYmplY3QpOworICAgIH0KIH0KIAogYm9vbCBN
ZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjp2aXNpdGVkKGNvbnN0IHZvaWQqIG9iamVj
dCkKQEAgLTkxLDYgKzEwMCw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1w
bDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5CiAgICAgaW5mby5h
ZGRNZW1iZXIobV90b3RhbFNpemVzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3Zpc2l0ZWRPYmpl
Y3RzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2FsbG9jYXRlZE9iamVjdHMpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fY291bnRlZE9iamVjdHMpOwogfQogCiB2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvbkltcGw6OnByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oCmlu
ZGV4IDhhZjhkNjBjNWQ3ZDIzNTYxZDIxMTkzY2QzZTc3YmExOTU2ZDgwMGEuLjUwOGYyZWZlOTNl
NjEwZWEyZmQxYjk3Mjg1ZDEyNTQ2NmIyNjMwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaApAQCAtNDgsNiArNDgsOCBA
QCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IFR5cGVOYW1lVG9TaXplTWFwOwogCiBj
bGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsIDogcHVibGljIFdURjo6TWVtb3J5
SW5zdHJ1bWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29u
c3Qgdm9pZCosIHNpemVfdD4gT2JqZWN0VG9TaXplTWFwOworCiAgICAgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQ2xpZW50SW1wbCgpCiAgICAgICAgIDogbV90b3RhbENvdW50ZWRPYmplY3RzKDApCiAg
ICAgICAgICwgbV90b3RhbE9iamVjdHNOb3RJbkFsbG9jYXRlZFNldCgwKQpAQCAtNjksMTMgKzcx
LDE0IEBAIHB1YmxpYzoKIAogICAgIFR5cGVOYW1lVG9TaXplTWFwIHNpemVzTWFwKCkgY29uc3Q7
CiAgICAgVmlzaXRlZE9iamVjdHMmIGFsbG9jYXRlZE9iamVjdHMoKSB7IHJldHVybiBtX2FsbG9j
YXRlZE9iamVjdHM7IH0KKyAgICBjb25zdCBPYmplY3RUb1NpemVNYXAmIGNvdW50ZWRPYmplY3Rz
KCkgeyByZXR1cm4gbV9jb3VudGVkT2JqZWN0czsgfQogCiAgICAgYm9vbCBjaGVja0luc3RydW1l
bnRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiAhbV9hbGxvY2F0ZWRPYmplY3RzLmlzRW1wdHko
KTsgfQogICAgIHNpemVfdCB2aXNpdGVkT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaXRl
ZE9iamVjdHMuc2l6ZSgpOyB9CiAgICAgc2l6ZV90IHRvdGFsQ291bnRlZE9iamVjdHMoKSBjb25z
dCB7IHJldHVybiBtX3RvdGFsQ291bnRlZE9iamVjdHM7IH0KICAgICBzaXplX3QgdG90YWxPYmpl
Y3RzTm90SW5BbGxvY2F0ZWRTZXQoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsT2JqZWN0c05vdElu
QWxsb2NhdGVkU2V0OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE1lbW9y
eU9iamVjdFR5cGUsIHNpemVfdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvdW50T2Jq
ZWN0U2l6ZShjb25zdCB2b2lkKiwgTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAKQEAg
LTg2LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBUeXBlVG9TaXplTWFwIG1fdG90YWxTaXplczsK
ICAgICBWaXNpdGVkT2JqZWN0cyBtX3Zpc2l0ZWRPYmplY3RzOwogICAgIFZpc2l0ZWRPYmplY3Rz
IG1fYWxsb2NhdGVkT2JqZWN0czsKKyAgICBPYmplY3RUb1NpemVNYXAgbV9jb3VudGVkT2JqZWN0
czsKICAgICBzaXplX3QgbV90b3RhbENvdW50ZWRPYmplY3RzOwogICAgIHNpemVfdCBtX3RvdGFs
T2JqZWN0c05vdEluQWxsb2NhdGVkU2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaAppbmRleCA3YWMyYzdjOTdl
N2ZmOGNlNzNkZmVhMWZmYTYzYWJmNWZhODE4MDBiLi5mZGRiNzRmMjMwZTQ2MzBlNTUzN2Y1OGZi
NmViMDI2Y2ZlMjFiZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZXZUb29sc0FnZW50Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCkBAIC02OSw2ICs2OSwxNCBAQCBwdWJsaWM6
CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRBbGxvY2F0ZWRPYmplY3RzKEFsbG9jYXRl
ZE9iamVjdFZpc2l0b3IqKSB7IH0KIAorICAgIGNsYXNzIE9iamVjdEluZm9Qcm92aWRlciB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHNpemVfdCBvYmplY3RTaXplKGNvbnN0IHZvaWQq
IHB0cikgY29uc3QgPSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+T2JqZWN0
SW5mb1Byb3ZpZGVyKCkgeyB9CisgICAgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcFVuY291bnRl
ZE9iamVjdHMoY29uc3QgT2JqZWN0SW5mb1Byb3ZpZGVyKikgeyB9CisKIHByb3RlY3RlZDoKICAg
ICB+V2ViRGV2VG9vbHNBZ2VudENsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggNDAyYjg2OTVjOWQx
NjhiNWMxMjYxZDU3OTU4MTQ4MGE4Y2I0MDZkNS4uZDM5N2M1NGExZjljOGM1MGQwNjhiY2E1OTM0
ZDBlNDA5OGVkNjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5z
cGVjdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5z
cGVjdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTE2OSw2ICsxNjksMTIgQEAgdm9pZCBJbnNwZWN0b3JD
bGllbnRJbXBsOjpnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+JiBzZXQp
CiAgICAgICAgIGFnZW50LT5nZXRBbGxvY2F0ZWRPYmplY3RzKHNldCk7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yQ2xpZW50SW1wbDo6ZHVtcFVuY291bnRlZE9iamVjdHMoY29uc3QgSGFzaE1hcDxjb25z
dCB2b2lkKiwgc2l6ZV90PiYgbWFwKQoreworICAgIGlmIChXZWJEZXZUb29sc0FnZW50SW1wbCog
YWdlbnQgPSBkZXZUb29sc0FnZW50KCkpCisgICAgICAgIGFnZW50LT5kdW1wVW5jb3VudGVkT2Jq
ZWN0cyhtYXApOworfQorCiB2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OndpbGxQcm9jZXNzVGFz
aygpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUHJvY2Vzc1Rhc2sobV9p
bnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCmluZGV4IDllMWVhMzcwZTQ3MzFlZTY4NTFlMGE3YzY1
Y2QzMjBiNjgzZmMxMmEuLmE4N2VlNDJmNWQ1ZjA1OWQwM2U1NjdlZjBhOWJhZDdhMzNjMGUxM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Zy
YW1lSW5zdHJ1bWVudGF0aW9uKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsb2NhdGVkT2Jq
ZWN0cyhIYXNoU2V0PGNvbnN0IHZvaWQqPiYpOworICAgIHZpcnR1YWwgdm9pZCBkdW1wVW5jb3Vu
dGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+Jik7CiAKIHByaXZh
dGU6CiAgICAgLy8gV2ViVGhyZWFkOjpUYXNrT2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCA3ZjM2MjAzNmI5
NzkzMTQ1ZjAwYTMxZDgzMjkyNjkzNTFlYzJlNGJmLi4xNzk4NmJiNzZmZWVkOTFlOWMwZmM2YzQ3
ZmVhYTU0Zjc3MDYwMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC00NTksMjYgKzQ1OSwxNCBAQCB2b2lkIFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjpnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+
JiBzZXQpCiB7CiAgICAgY2xhc3MgQ291bnRpbmdWaXNpdG9yIDogcHVibGljIFdlYkRldlRvb2xz
QWdlbnRDbGllbnQ6OkFsbG9jYXRlZE9iamVjdFZpc2l0b3IgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQ291bnRpbmdWaXNpdG9yKCkgOiBtX3RvdGFsT2JqZWN0c0NvdW50KDApCi0gICAgICAgIHsK
LSAgICAgICAgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRPYmplY3QoY29uc3Qgdm9pZCog
cHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICArK21fdG90YWxPYmplY3RzQ291bnQ7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBzaXplX3QgdG90YWxPYmpl
Y3RzQ291bnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV90b3RhbE9iamVjdHND
b3VudDsKLSAgICAgICAgfQorICAgICAgICBDb3VudGluZ1Zpc2l0b3IoKSA6IG1fdG90YWxPYmpl
Y3RzQ291bnQoMCkgeyB9CisgICAgICAgIHZpcnR1YWwgc2l6ZV90IHZpc2l0T2JqZWN0KGNvbnN0
IHZvaWQqIHB0cikgeyByZXR1cm4gKyttX3RvdGFsT2JqZWN0c0NvdW50OyB9CisgICAgICAgIHNp
emVfdCB0b3RhbE9iamVjdHNDb3VudCgpIHsgcmV0dXJuIG1fdG90YWxPYmplY3RzQ291bnQ7IH0K
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHNpemVfdCBtX3RvdGFsT2JqZWN0c0NvdW50OwogICAg
IH07CiAKLSAgICBDb3VudGluZ1Zpc2l0b3IgY291bnRlcjsKLSAgICBtX2NsaWVudC0+dmlzaXRB
bGxvY2F0ZWRPYmplY3RzKCZjb3VudGVyKTsKLQogICAgIGNsYXNzIFBvaW50ZXJDb2xsZWN0b3Ig
OiBwdWJsaWMgV2ViRGV2VG9vbHNBZ2VudENsaWVudDo6QWxsb2NhdGVkT2JqZWN0VmlzaXRvciB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBQb2ludGVyQ29sbGVjdG9yKHNpemVfdCBt
YXhPYmplY3RzQ291bnQpCkBAIC00ODgsMTggKzQ3NiwxNSBAQCB2b2lkIFdlYkRldlRvb2xzQWdl
bnRJbXBsOjpnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+JiBzZXQpCiAg
ICAgICAgICAgICAsIG1fcG9pbnRlcnMobmV3IGNvbnN0IHZvaWQqW21heE9iamVjdHNDb3VudF0p
CiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICB+UG9pbnRlckNvbGxlY3RvcigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZVtdIG1fcG9pbnRlcnM7Ci0gICAgICAgIH0KLSAgICAg
ICAgdmlydHVhbCBib29sIHZpc2l0T2JqZWN0KGNvbnN0IHZvaWQqIHB0cikKKyAgICAgICAgflBv
aW50ZXJDb2xsZWN0b3IoKSB7IGRlbGV0ZVtdIG1fcG9pbnRlcnM7IH0KKyAgICAgICAgdmlydHVh
bCBzaXplX3QgdmlzaXRPYmplY3QoY29uc3Qgdm9pZCogcHRyKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAobV9pbmRleCA9PSBtX21heE9iamVjdHNDb3VudCkgewogICAgICAgICAgICAgICAg
IG1fc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fcG9pbnRl
cnNbbV9pbmRleCsrXSA9IHB0cjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgcmV0dXJuIG1faW5kZXg7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIHN1Y2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX3N1Y2Nlc3M7IH0KQEAgLTUxNyw2ICs1MDIsOSBAQCB2b2lkIFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjpnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+
JiBzZXQpCiAgICAgICAgIGNvbnN0IHZvaWQqKiBtX3BvaW50ZXJzOwogICAgIH07CiAKKyAgICBD
b3VudGluZ1Zpc2l0b3IgY291bnRlcjsKKyAgICBtX2NsaWVudC0+dmlzaXRBbGxvY2F0ZWRPYmpl
Y3RzKCZjb3VudGVyKTsKKwogICAgIC8vIERvdWJsZSBzaXplIHRvIGFsbG93IHJvb20gZm9yIGFs
bCBvYmplY3RzIHRoYXQgbWF5IGhhdmUgYmVlbiBhbGxvY2F0ZWQKICAgICAvLyBzaW5jZSB3ZSBj
b3VudGVkIHRoZW0uCiAgICAgc2l6ZV90IGVzdGltYXRlZE1heE9iamVjdHNDb3VudCA9IGNvdW50
ZXIudG90YWxPYmplY3RzQ291bnQoKSAqIDI7CkBAIC01MzEsNiArNTE5LDI1IEBAIHZvaWQgV2Vi
RGV2VG9vbHNBZ2VudEltcGw6OmdldEFsbG9jYXRlZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lk
Kj4mIHNldCkKICAgICB9CiB9CiAKK3ZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmR1bXBVbmNv
dW50ZWRPYmplY3RzKGNvbnN0IEhhc2hNYXA8Y29uc3Qgdm9pZCosIHNpemVfdD4mIG1hcCkKK3sK
KyAgICBjbGFzcyBPYmplY3RJbmZvUHJvdmlkZXIgOiBwdWJsaWMgV2ViRGV2VG9vbHNBZ2VudENs
aWVudDo6T2JqZWN0SW5mb1Byb3ZpZGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE9iamVjdElu
Zm9Qcm92aWRlcihjb25zdCBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+JiBtYXApIDogbV9t
YXAobWFwKSB7IH0KKyAgICAgICAgdmlydHVhbCBzaXplX3Qgb2JqZWN0U2l6ZShjb25zdCB2b2lk
KiBwdHIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEhhc2hNYXA8Y29uc3Qgdm9pZCos
IHNpemVfdD46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hcC5maW5kKHB0cik7CisgICAgICAgICAg
ICByZXR1cm4gaSA9PSBtX21hcC5lbmQoKSA/IDAgOiBpLT52YWx1ZTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3QgSGFzaE1hcDxjb25zdCB2b2lkKiwgc2l6ZV90PiYg
bV9tYXA7CisgICAgfTsKKworICAgIE9iamVjdEluZm9Qcm92aWRlciBwcm92aWRlcihtYXApOwor
ICAgIG1fY2xpZW50LT5kdW1wVW5jb3VudGVkT2JqZWN0cygmcHJvdmlkZXIpOworfQorCiB2b2lk
IFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQmFja2VuZChjb25zdCBX
ZWJTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAppbmRleCA2YTk2NjMxMjc1MWM0YmZlNDEz
MDI1MmUxYzA2OTUzMTQ4Yzc1ZjRiLi4xZjk2OGYyODkzMTdhNjkxYmQ5MDkzMzA4ZThhZTMwM2Ri
NjgzOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGF1dG9ab29tUGFnZVRvRml0V2lkdGgoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxvY2F0
ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+Jik7CisgICAgdmlydHVhbCB2b2lkIGR1bXBV
bmNvdW50ZWRPYmplY3RzKGNvbnN0IEhhc2hNYXA8Y29uc3Qgdm9pZCosIHNpemVfdD4mKTsKIAog
ICAgIGludCBob3N0SWQoKSB7IHJldHVybiBtX2hvc3RJZDsgfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTJiYzA5NzVmMmMyYjU3YmUzNWM1
NzAxNTAyNmVlYjFlYmM1ZGVlMi4uYzM4NTYxZmMzNTdiYzQ4M2M4YmIxODlmZWQ3ZDgzMmYyMzlh
ZDNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTE3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUkgcHJvdmlkZSBkYXRhIGZv
ciBtaXhpbmcgd2l0aCB0Y21hbGxvYyBoZWFwIGR1bXBzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0NTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjb3VudE9iamVjdFNpemUgbm93IHJlcXVpcmVzIHBv
aW50ZXIgdG8gb2JqZWN0IGFzIHRoZSBmaXJzdCBhcmd1bWVudC4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwOgorCiAyMDEy
LTEwLTE3ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29t
PgogCiAgICAgICAgIFtXSzJdW1dUUl0gSW5qZWN0ZWRCdW5kbGVQYWdlOjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKCkgc2hvdWxkIHByaW50IG9ubHkgZmlsZW5hbWUgcGFydCBvZiBs
b2NhbCBVUkxzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1v
cnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCmluZGV4IDc4NDdkN2QyNjUzZDZkMDAwMDg0
M2VkYjlkZTdlYTRiOTc2OWU3ZDguLmRkNmMzNWM3MmJhMzUzYTY5YzVlMGY0Y2I5OGVlZjNjNjYw
ZjU0OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUlu
c3RydW1lbnRhdGlvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgY2xhc3MgQ2xpZW50IDogcHVibGljIFdURjo6TWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjb3VudE9i
amVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiwgTWVtb3J5T2JqZWN0
VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgewogICAgICAgICAgICAgVHlw
ZVRvU2l6ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdG90YWxTaXplcy5hZGQob2JqZWN0VHlw
ZSwgc2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169194</attachid>
            <date>2012-10-17 09:18:57 -0700</date>
            <delta_ts>2012-10-18 01:23:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99457-20121017201743.patch</filename>
            <type>text/plain</type>
            <size>20864</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIyNDhkYTRmNjRlYmZlYzRjOWQ2Yzcx
MGM1YzMyOGUyZTg3OWQ0YTkuLjhjMmQzMmI0YzA3MTFlYTliNGYzODgyNGFiM2UxNmE2ZTNkOGM2
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMTAtMTcgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBwcm92aWRl
IGRhdGEgZm9yIG1peGluZyB3aXRoIHRjbWFsbG9jIGhlYXAgZHVtcHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQ1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvdW50T2JqZWN0U2l6ZSBub3cgYWNj
ZXB0cyBwdHIgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBzYXZlcyBpdCBpbnRvIEhhc2hNYXAg
aWYgdGhlIGJpbmFyeSB3YXMgcmFuIHdpdGggSEVBUFBST0ZJTEUgZW52IHZhcmlhYmxlLgorICAg
ICAgICBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uIGRvZXMgc25hcHNob3QgYW5kIGNhbGxz
IHRoZSBkb3duc3RyZWFtIGNvZGUgd2l0aCB0aGUgbWFwIG9mIGNvdW50ZWQgb2JqZWN0cy4KKwor
ICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9yeUlu
c3RydW1lbnRhdGlvbkNsaWVudCk6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Y291bnRPYmplY3RTaXplKToKKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRSYXdCdWZmZXIpOgorICAgICAgICAoV1RGOjpNZW1vcnlDbGFzc0luZm86OmFkZFByaXZh
dGVCdWZmZXIpOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVj
dEltcGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZExpc3RIYXNo
U2V0KToKKyAgICAgICAgKFdURjo6Ojpwcm9jZXNzKToKKwogMjAxMi0xMC0xNiAgTWljaGFlbCBT
YWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgV1RGX1VTRV84QklU
X1RFWFRSVU4gdG8gRU5BQkxFXzhCSVRfVEVYVFJVTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4MmZiMzNmMzky
OWI5ZWU1NTc3OTkzMDAyODNlNmY2ZDdiNzJlZTguLjBkNDM3ZTU4MTM0NjhhMWIzODc0YzIyYjZj
MDY2NWQxNjAxOWJjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOSBAQAogMjAxMi0xMC0xNyAg
SWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogTk1JIHByb3ZpZGUgZGF0YSBmb3IgbWl4aW5nIHdpdGggdGNtYWxsb2MgaGVhcCBk
dW1wcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5
NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgY291
bnRPYmplY3RTaXplIG5vdyBhY2NlcHRzIHB0ciBhcyB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHNh
dmVzIGl0IGludG8gSGFzaE1hcCBpZiB0aGUgYmluYXJ5IHdhcyByYW4gd2l0aCBIRUFQUFJPRklM
RSBlbnYgdmFyaWFibGUuCisgICAgICAgIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24gZG9l
cyBzbmFwc2hvdCBhbmQgY2FsbHMgdGhlIGRvd25zdHJlYW0gY29kZSB3aXRoIHRoZSBtYXAgb2Yg
Y291bnRlZCBvYmplY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpkdW1wVW5jb3VudGVkT2JqZWN0
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcG9ydEpTSGVhcEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0
UmVuZGVyVHJlZUluZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbik6CisgICAg
ICAgICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6Y291bnRPYmplY3RTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbC5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpjb3VudGVk
T2JqZWN0cyk6CisKKzIwMTItMTAtMTcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgorCiAgICAgICAgIFVucmV2aWV3ZWQgZml4IGZvciBJbWFnZVNvdXJjZUNHLgogCiAg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDRiMDU5YWE2ODViZmQyZWJkMWUwMGY2OGUxMGU5Mzk4ZTBj
Y2YxY2YuLjhhNjZmMWZhOTQ1YmIwZDg3N2UwYjhlZjhhZjNhMmVkYjYwOWNmYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMTAtMTcgIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IE5NSSBwcm92aWRlIGRhdGEgZm9yIG1peGluZyB3aXRoIHRjbWFsbG9jIGhlYXAgZHVtcHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQ1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVtYmVkZGVyJ3Mg
Y29kZSB3cmFwcyB0aGUgbWFwIHdpdGggY291bnRlZCBvYmplY3RzIGluZm8gaW50byBPYmplY3RJ
bmZvUHJvdmlkZXIKKyAgICAgICAgYW5kIGZvcmNlcyBkb3duc3RyZWFtIGNvZGUgdG8gbWFrZSB0
Y21hbGxvYyBoZWFwIHNuYXBzaG90LgorICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
biBpcyBlbXB0eS4KKworICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50Lmg6
CisgICAgICAgIChPYmplY3RJbmZvUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZU
b29sc0FnZW50Q2xpZW50OjpPYmplY3RJbmZvUHJvdmlkZXI6On5PYmplY3RJbmZvUHJvdmlkZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50Q2xpZW50OjpkdW1wVW5jb3VudGVk
T2JqZWN0cyk6CisgICAgICAgIChXZWJEZXZUb29sc0FnZW50Q2xpZW50KToKKyAgICAgICAgKiBz
cmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNs
aWVudEltcGw6OmR1bXBVbmNvdW50ZWRPYmplY3RzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVu
dEltcGwpOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpnZXRBbGxvY2F0ZWRPYmplY3RzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmR1bXBVbmNvdW50ZWRPYmplY3Rz
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
Lmg6CisgICAgICAgIChXZWJEZXZUb29sc0FnZW50SW1wbCk6CisKIDIwMTItMTAtMTcgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTG9jYWxpemVkIGRhdGUg
c2hvdWxkIGJlIGJhc2VkIG9uIExETUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9y
eUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggMGI3YzIxNzMxZDQzZTExYzFjNTYwZDQ3NWEwM2EwMjgxNjU1MWM4NS4uNWY5Mzdi
YzYyNDJkYjZlYmY0MzFjZGFmNjJiOWMxNzA0MGQyOGY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBUKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8q
KTsKIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNvdW50T2JqZWN0U2l6ZShNZW1vcnlPYmplY3RUeXBlLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY291bnRPYmplY3RTaXplKGNvbnN0IHZvaWQqLCBNZW1vcnlPYmplY3RUeXBlLCBz
aXplX3QpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCopID0gMDsKIH07
CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qg
c2l6ZSkgeyBtX2NsaWVudC0+Y291bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIHNpemUpOyB9Cisg
ICAgdm9pZCBjb3VudE9iamVjdFNpemUoY29uc3Qgdm9pZCogb2JqZWN0LCBNZW1vcnlPYmplY3RU
eXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKSB7IG1fY2xpZW50LT5jb3VudE9iamVjdFNpemUo
b2JqZWN0LCBvYmplY3RUeXBlLCBzaXplKTsgfQogICAgIGJvb2wgdmlzaXRlZChjb25zdCB2b2lk
KiBwb2ludGVyKSB7IHJldHVybiBtX2NsaWVudC0+dmlzaXRlZChwb2ludGVyKTsgfQogICAgIHZv
aWQgY2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqIHBvaW50ZXIpIHsgcmV0dXJuIG1fY2xp
ZW50LT5jaGVja0NvdW50ZWRPYmplY3QocG9pbnRlcik7IH0KIApAQCAtMTU5LDcgKzE1OSw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCB2aXNpdGVkKGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVj
dFR5cGUsIHNpemUpOworICAgICAgICBjb3VudE9iamVjdFNpemUoYnVmZmVyLCBvd25lck9iamVj
dFR5cGUsIHNpemUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xOTks
NyArMTk5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE0+IHZvaWQgYWRkTWVt
YmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0
KG1lbWJlciwgbV9vYmplY3RUeXBlKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExpc3RIYXNo
U2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5cGUmIHNldCkg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkTGlzdEhhc2hTZXQoc2V0LCBtX29iamVjdFR5
cGUsIHRydWUpOyB9CiAgICAgdm9pZCBhZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3QmIGJ1
ZmZlciwgc2l6ZV90IHNpemUpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFJhd0J1ZmZl
cihidWZmZXIsIG1fb2JqZWN0VHlwZSwgc2l6ZSk7IH0KLSAgICB2b2lkIGFkZFByaXZhdGVCdWZm
ZXIoc2l6ZV90IHNpemUpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6
ZShtX29iamVjdFR5cGUsIHNpemUpOyB9CisgICAgdm9pZCBhZGRQcml2YXRlQnVmZmVyKHNpemVf
dCBzaXplKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUoMCwgbV9v
YmplY3RUeXBlLCBzaXplKTsgfQogCiAgICAgdm9pZCBhZGRXZWFrUG9pbnRlcih2b2lkKikgeyB9
CiAKQEAgLTIzMiwyMCArMjMyLDE2IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRP
YmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwo
Y29uc3QgT3duUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2Jq
ZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewotICAgIGlmIChvd25pbmdU
eXBlID09IGJ5UG9pbnRlciAmJiAhdmlzaXRlZChvYmplY3QpKSB7Ci0gICAgICAgIGNvdW50T2Jq
ZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7Ci0gICAgICAgIGNoZWNr
Q291bnRlZE9iamVjdChvYmplY3QpOwotICAgIH0KKyAgICBpZiAob3duaW5nVHlwZSA9PSBieVBv
aW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkKKyAgICAgICAgY291bnRPYmplY3RTaXplKG9iamVj
dCwgb3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwogICAgIGFkZE9iamVjdEltcGwo
b2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwo
Y29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2Jq
ZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewotICAgIGlmIChvd25pbmdU
eXBlID09IGJ5UG9pbnRlciAmJiAhdmlzaXRlZChvYmplY3QpKSB7Ci0gICAgICAgIGNvdW50T2Jq
ZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7Ci0gICAgICAgIGNoZWNr
Q291bnRlZE9iamVjdChvYmplY3QpOwotICAgIH0KKyAgICBpZiAob3duaW5nVHlwZSA9PSBieVBv
aW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkKKyAgICAgICAgY291bnRPYmplY3RTaXplKG9iamVj
dCwgb3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwogICAgIGFkZE9iamVjdEltcGwo
b2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOwogfQogCkBAIC0yNTUs
NyArMjUxLDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZExpc3RIYXNoU2V0KGNv
bnN0IExpc3RIYXNoU2V0VHlwZSYgaGFzaFNldCwgTWVtb3IKICAgICBpZiAodmlzaXRlZCgmaGFz
aFNldCkpCiAgICAgICAgIHJldHVybjsKICAgICBzaXplX3Qgc2l6ZSA9IChjb250ZW50T25seSA/
IDAgOiBzaXplb2YoTGlzdEhhc2hTZXRUeXBlKSkgKyBoYXNoU2V0LmNhcGFjaXR5KCkgKiBzaXpl
b2Yodm9pZCopICsgaGFzaFNldC5zaXplKCkgKiAoc2l6ZW9mKHR5cGVuYW1lIExpc3RIYXNoU2V0
VHlwZTo6VmFsdWVUeXBlKSArIDIgKiBzaXplb2Yodm9pZCopKTsKLSAgICBjb3VudE9iamVjdFNp
emUob3duZXJPYmplY3RUeXBlLCBzaXplKTsKKyAgICBjb3VudE9iamVjdFNpemUoJmhhc2hTZXQs
IG93bmVyT2JqZWN0VHlwZSwgc2l6ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0y
NjMsNyArMjU5LDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBv
aW50ZXI8VD46OnByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW8KIHsKICAgICBNZW1vcnlPYmpl
Y3RJbmZvIG1lbW9yeU9iamVjdEluZm8obWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBtX293bmVyT2Jq
ZWN0VHlwZSk7CiAgICAgcmVwb3J0TWVtb3J5VXNhZ2UobV9wb2ludGVyLCAmbWVtb3J5T2JqZWN0
SW5mbyk7Ci0gICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUobWVtb3J5
T2JqZWN0SW5mby5vYmplY3RUeXBlKCksIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0U2l6ZSgpKTsK
KyAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShtX3BvaW50ZXIsIG1l
bW9yeU9iamVjdEluZm8ub2JqZWN0VHlwZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUo
KSk7CiB9CiAKIC8vIExpbmsgdGltZSBndWFyZCBmb3IgY2xhc3NlcyB3aXRoIGV4dGVybmFsIG1l
bW9yeSBpbnN0cnVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50LmgKaW5kZXggMmQ0ZmIzZjI2MTI5Y2I5MDQyOTM4OGUwNmQzMTJkZDM1ZDMxMDVhNC4u
ZTQ3ZTRiM2E0ZDQ2MGFhMWNiZjk0ODJiNDE3YTg1ZjllNjNhMjY2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSAiSW5zcGVjdG9yU3RhdGVDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGdldEFsbG9jYXRlZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4m
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZHVtcFVuY291bnRlZE9iamVjdHMoY29uc3QgSGFzaE1h
cDxjb25zdCB2b2lkKiwgc2l6ZV90PiYpIHsgfQogCiAgICAgc3RhdGljIGJvb2wgZG9EaXNwYXRj
aE1lc3NhZ2VPbkZyb250ZW5kUGFnZShQYWdlKiBmcm9udGVuZFBhZ2UsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5jcHAKaW5kZXggYmFkY2I3OTViZWY2NTljN2NjOGQyMTA4YzQ5ZWI4ZWEwZDU1
NzU5YS4uMTBhYzA1NTAyYWNlMzE0NzQ2Mzc4NGUwNmZmZTAzNTExNThlZDZmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00
MzYsMTYgKzQzNiwxNiBAQCBzdGF0aWMgdm9pZCByZXBvcnRKU0hlYXBJbmZvKFdURjo6TWVtb3J5
SW5zdHJ1bWVudGF0aW9uQ2xpZW50JiBtZW1vcnlJbnN0cnVtZW50YQogICAgIEhlYXBJbmZvIGlu
Zm87CiAgICAgU2NyaXB0R0NFdmVudDo6Z2V0SGVhcFNpemUoaW5mbyk7CiAKLSAgICBtZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnQuY291bnRPYmplY3RTaXplKFdlYkNvcmVNZW1vcnlUeXBlczo6
SlNIZWFwVXNlZCwgaW5mby51c2VkSlNIZWFwU2l6ZSk7Ci0gICAgbWVtb3J5SW5zdHJ1bWVudGF0
aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZShXZWJDb3JlTWVtb3J5VHlwZXM6OkpTSGVhcFVudXNl
ZCwgaW5mby50b3RhbEpTSGVhcFNpemUgLSBpbmZvLnVzZWRKU0hlYXBTaXplKTsKKyAgICBtZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnQuY291bnRPYmplY3RTaXplKDAsIFdlYkNvcmVNZW1vcnlU
eXBlczo6SlNIZWFwVXNlZCwgaW5mby51c2VkSlNIZWFwU2l6ZSk7CisgICAgbWVtb3J5SW5zdHJ1
bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZSgwLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkpT
SGVhcFVudXNlZCwgaW5mby50b3RhbEpTSGVhcFNpemUgLSBpbmZvLnVzZWRKU0hlYXBTaXplKTsK
IH0KIAogc3RhdGljIHZvaWQgcmVwb3J0UmVuZGVyVHJlZUluZm8oV1RGOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb25DbGllbnQmIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCwgUGFnZSogcGFnZSkK
IHsKICAgICBBcmVuYVNpemUgYXJlbmFTaXplID0gcGFnZS0+cmVuZGVyVHJlZVNpemUoKTsKIAot
ICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoV2ViQ29yZU1l
bW9yeVR5cGVzOjpSZW5kZXJUcmVlVXNlZCwgYXJlbmFTaXplLnRyZWVTaXplKTsKLSAgICBtZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnQuY291bnRPYmplY3RTaXplKFdlYkNvcmVNZW1vcnlUeXBl
czo6UmVuZGVyVHJlZVVudXNlZCwgYXJlbmFTaXplLmFsbG9jYXRlZCAtIGFyZW5hU2l6ZS50cmVl
U2l6ZSk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZSgw
LCBXZWJDb3JlTWVtb3J5VHlwZXM6OlJlbmRlclRyZWVVc2VkLCBhcmVuYVNpemUudHJlZVNpemUp
OworICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoMCwgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpSZW5kZXJUcmVlVW51c2VkLCBhcmVuYVNpemUuYWxsb2NhdGVkIC0g
YXJlbmFTaXplLnRyZWVTaXplKTsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTU0MSw2ICs1NDEsOCBA
QCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9u
KEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwogICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRS
b290T2JqZWN0KG1lbW9yeUluc3RydW1lbnRhdGlvbik7CiAgICAgbWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmFkZFJvb3RPYmplY3QobWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50KTsKIAorICAgIG1f
aW5zcGVjdG9yQ2xpZW50LT5kdW1wVW5jb3VudGVkT2JqZWN0cyhtZW1vcnlJbnN0cnVtZW50YXRp
b25DbGllbnQuY291bnRlZE9iamVjdHMoKSk7CisKICAgICBNZW1vcnlVc2FnZVN0YXRzR2VuZXJh
dG9yIHN0YXRzR2VuZXJhdG9yKCZtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQpOwogICAgIHN0
YXRzR2VuZXJhdG9yLmR1bXAoY2hpbGRyZW4uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKaW5kZXggZTkz
ZDY2ZjRmYWNkYzA0YjliOWUwNTYxMGZkOTQwZjBjYTExNmFmYS4uMjBkMTZjYjFlMDNjMjU3Yjk4
NzM3YjM0OTZjYzhmZjVlMThmNWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcApAQCAtNTgsMTMgKzU4LDIyIEBA
IFR5cGVOYW1lVG9TaXplTWFwIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnNpemVz
TWFwKCkgY29uc3QKICAgICByZXR1cm4gc2l6ZXNNYXA7CiB9CiAKLXZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uQ2xpZW50SW1wbDo6Y291bnRPYmplY3RTaXplKE1lbW9yeU9iamVjdFR5cGUgb2Jq
ZWN0VHlwZSwgc2l6ZV90IHNpemUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudElt
cGw6OmNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUg
b2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG9iamVjdFR5cGUpOworCiAg
ICAgVHlwZVRvU2l6ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdG90YWxTaXplcy5hZGQob2Jq
ZWN0VHlwZSwgc2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBzaXplOwogICAgICsrbV90b3RhbENvdW50ZWRPYmplY3Rz
OworCisgICAgaWYgKCFjaGVja0luc3RydW1lbnRlZE9iamVjdHMoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG9iamVjdCkgeworICAgICAgICBtX2NvdW50ZWRPYmplY3RzLmFkZChvYmpl
Y3QsIHNpemUpOworICAgICAgICBjaGVja0NvdW50ZWRPYmplY3Qob2JqZWN0KTsKKyAgICB9CiB9
CiAKIGJvb2wgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6dmlzaXRlZChjb25zdCB2
b2lkKiBvYmplY3QpCkBAIC05MSw2ICsxMDAsNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bkNsaWVudEltcGw6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeQog
ICAgIGluZm8uYWRkTWVtYmVyKG1fdG90YWxTaXplcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV92
aXNpdGVkT2JqZWN0cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9hbGxvY2F0ZWRPYmplY3RzKTsK
KyAgICBpbmZvLmFkZE1lbWJlcihtX2NvdW50ZWRPYmplY3RzKTsKIH0KIAogdm9pZCBNZW1vcnlJ
bnN0cnVtZW50YXRpb25JbXBsOjpwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlv
bkltcGwuaAppbmRleCA4YWY4ZDYwYzVkN2QyMzU2MWQyMTE5M2NkM2U3N2JhMTk1NmQ4MDBhLi41
MDhmMmVmZTkzZTYxMGVhMmZkMWI5NzI4NWQxMjU0NjZiMjYzMGUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgKQEAgLTQ4
LDYgKzQ4LDggQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc2l6ZV90PiBUeXBlTmFtZVRvU2l6
ZU1hcDsKIAogY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCA6IHB1YmxpYyBX
VEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+IE9iamVjdFRvU2l6ZU1hcDsKKwogICAgIE1lbW9y
eUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwoKQogICAgICAgICA6IG1fdG90YWxDb3VudGVkT2Jq
ZWN0cygwKQogICAgICAgICAsIG1fdG90YWxPYmplY3RzTm90SW5BbGxvY2F0ZWRTZXQoMCkKQEAg
LTY5LDEzICs3MSwxNCBAQCBwdWJsaWM6CiAKICAgICBUeXBlTmFtZVRvU2l6ZU1hcCBzaXplc01h
cCgpIGNvbnN0OwogICAgIFZpc2l0ZWRPYmplY3RzJiBhbGxvY2F0ZWRPYmplY3RzKCkgeyByZXR1
cm4gbV9hbGxvY2F0ZWRPYmplY3RzOyB9CisgICAgY29uc3QgT2JqZWN0VG9TaXplTWFwJiBjb3Vu
dGVkT2JqZWN0cygpIHsgcmV0dXJuIG1fY291bnRlZE9iamVjdHM7IH0KIAogICAgIGJvb2wgY2hl
Y2tJbnN0cnVtZW50ZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gIW1fYWxsb2NhdGVkT2JqZWN0
cy5pc0VtcHR5KCk7IH0KICAgICBzaXplX3QgdmlzaXRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVy
biBtX3Zpc2l0ZWRPYmplY3RzLnNpemUoKTsgfQogICAgIHNpemVfdCB0b3RhbENvdW50ZWRPYmpl
Y3RzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbENvdW50ZWRPYmplY3RzOyB9CiAgICAgc2l6ZV90
IHRvdGFsT2JqZWN0c05vdEluQWxsb2NhdGVkU2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3RhbE9i
amVjdHNOb3RJbkFsbG9jYXRlZFNldDsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0
U2l6ZShNZW1vcnlPYmplY3RUeXBlLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBjb3VudE9iamVjdFNpemUoY29uc3Qgdm9pZCosIE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCopIE9WRVJS
SURFOwogCkBAIC04Niw2ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgVHlwZVRvU2l6ZU1hcCBtX3Rv
dGFsU2l6ZXM7CiAgICAgVmlzaXRlZE9iamVjdHMgbV92aXNpdGVkT2JqZWN0czsKICAgICBWaXNp
dGVkT2JqZWN0cyBtX2FsbG9jYXRlZE9iamVjdHM7CisgICAgT2JqZWN0VG9TaXplTWFwIG1fY291
bnRlZE9iamVjdHM7CiAgICAgc2l6ZV90IG1fdG90YWxDb3VudGVkT2JqZWN0czsKICAgICBzaXpl
X3QgbV90b3RhbE9iamVjdHNOb3RJbkFsbG9jYXRlZFNldDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50LmgKaW5kZXgg
N2FjMmM3Yzk3ZTdmZjhjZTczZGZlYTFmZmE2M2FiZjVmYTgxODAwYi4uZmRkYjc0ZjIzMGU0NjMw
ZTU1MzdmNThmYjZlYjAyNmNmZTIxYmY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaApAQCAtNjksNiArNjksMTQg
QEAgcHVibGljOgogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0QWxsb2NhdGVkT2JqZWN0
cyhBbGxvY2F0ZWRPYmplY3RWaXNpdG9yKikgeyB9CiAKKyAgICBjbGFzcyBPYmplY3RJbmZvUHJv
dmlkZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCBzaXplX3Qgb2JqZWN0U2l6ZShj
b25zdCB2b2lkKiBwdHIpIGNvbnN0ID0gMDsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1
YWwgfk9iamVjdEluZm9Qcm92aWRlcigpIHsgfQorICAgIH07CisgICAgdmlydHVhbCB2b2lkIGR1
bXBVbmNvdW50ZWRPYmplY3RzKGNvbnN0IE9iamVjdEluZm9Qcm92aWRlciopIHsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgfldlYkRldlRvb2xzQWdlbnRDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCmluZGV4IDQw
MmI4Njk1YzlkMTY4YjVjMTI2MWQ1Nzk1ODE0ODBhOGNiNDA2ZDUuLmQzOTdjNTRhMWY5YzhjNTBk
MDY4YmNhNTkzNGQwZTQwOThlZDY0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCkBAIC0xNjksNiArMTY5LDEyIEBAIHZvaWQg
SW5zcGVjdG9yQ2xpZW50SW1wbDo6Z2V0QWxsb2NhdGVkT2JqZWN0cyhIYXNoU2V0PGNvbnN0IHZv
aWQqPiYgc2V0KQogICAgICAgICBhZ2VudC0+Z2V0QWxsb2NhdGVkT2JqZWN0cyhzZXQpOwogfQog
Cit2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OmR1bXBVbmNvdW50ZWRPYmplY3RzKGNvbnN0IEhh
c2hNYXA8Y29uc3Qgdm9pZCosIHNpemVfdD4mIG1hcCkKK3sKKyAgICBpZiAoV2ViRGV2VG9vbHNB
Z2VudEltcGwqIGFnZW50ID0gZGV2VG9vbHNBZ2VudCgpKQorICAgICAgICBhZ2VudC0+ZHVtcFVu
Y291bnRlZE9iamVjdHMobWFwKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjp3aWxs
UHJvY2Vzc1Rhc2soKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFByb2Nl
c3NUYXNrKG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAppbmRleCA5ZTFlYTM3MGU0NzMxZWU2
ODUxZTBhN2M2NWNkMzIwYjY4M2ZjMTJhLi5hODdlZTQyZjVkNWYwNTlkMDNlNTY3ZWYwYTliYWQ3
YTMzYzBlMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0
b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFs
bG9jYXRlZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHVtcFVuY291bnRlZE9iamVjdHMoY29uc3QgSGFzaE1hcDxjb25zdCB2b2lkKiwgc2l6ZV90PiYp
OwogCiBwcml2YXRlOgogICAgIC8vIFdlYlRocmVhZDo6VGFza09ic2VydmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXgg
N2YzNjIwMzZiOTc5MzE0NWYwMGEzMWQ4MzI5MjY5MzUxZWMyZTRiZi4uMjZiNGVmMmUyODhjZTMy
NmVhNjIwMzg5MWYyNDFhZjQ3ODNkMWY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtNDYyLDEyICs0NjIsMTMgQEAg
dm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6Z2V0QWxsb2NhdGVkT2JqZWN0cyhIYXNoU2V0PGNv
bnN0IHZvaWQqPiYgc2V0KQogICAgICAgICBDb3VudGluZ1Zpc2l0b3IoKSA6IG1fdG90YWxPYmpl
Y3RzQ291bnQoMCkKICAgICAgICAgewogICAgICAgICB9CisKICAgICAgICAgdmlydHVhbCBib29s
IHZpc2l0T2JqZWN0KGNvbnN0IHZvaWQqIHB0cikKICAgICAgICAgewogICAgICAgICAgICAgKytt
X3RvdGFsT2JqZWN0c0NvdW50OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
LSAgICAgICAgc2l6ZV90IHRvdGFsT2JqZWN0c0NvdW50KCkKKyAgICAgICAgc2l6ZV90IHRvdGFs
T2JqZWN0c0NvdW50KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1fdG90
YWxPYmplY3RzQ291bnQ7CiAgICAgICAgIH0KQEAgLTQ4OCw3ICs0ODksNyBAQCB2b2lkIFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjpnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+
JiBzZXQpCiAgICAgICAgICAgICAsIG1fcG9pbnRlcnMobmV3IGNvbnN0IHZvaWQqW21heE9iamVj
dHNDb3VudF0pCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICB+UG9pbnRlckNvbGxlY3Rv
cigpCisgICAgICAgIHZpcnR1YWwgflBvaW50ZXJDb2xsZWN0b3IoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBkZWxldGVbXSBtX3BvaW50ZXJzOwogICAgICAgICB9CkBAIC01MzEsNiArNTMyLDI1
IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmdldEFsbG9jYXRlZE9iamVjdHMoSGFzaFNl
dDxjb25zdCB2b2lkKj4mIHNldCkKICAgICB9CiB9CiAKK3ZvaWQgV2ViRGV2VG9vbHNBZ2VudElt
cGw6OmR1bXBVbmNvdW50ZWRPYmplY3RzKGNvbnN0IEhhc2hNYXA8Y29uc3Qgdm9pZCosIHNpemVf
dD4mIG1hcCkKK3sKKyAgICBjbGFzcyBPYmplY3RJbmZvUHJvdmlkZXIgOiBwdWJsaWMgV2ViRGV2
VG9vbHNBZ2VudENsaWVudDo6T2JqZWN0SW5mb1Byb3ZpZGVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIE9iamVjdEluZm9Qcm92aWRlcihjb25zdCBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+
JiBtYXApIDogbV9tYXAobWFwKSB7IH0KKyAgICAgICAgdmlydHVhbCBzaXplX3Qgb2JqZWN0U2l6
ZShjb25zdCB2b2lkKiBwdHIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEhhc2hNYXA8
Y29uc3Qgdm9pZCosIHNpemVfdD46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hcC5maW5kKHB0cik7
CisgICAgICAgICAgICByZXR1cm4gaSA9PSBtX21hcC5lbmQoKSA/IDAgOiBpLT52YWx1ZTsKKyAg
ICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3QgSGFzaE1hcDxjb25zdCB2b2lk
Kiwgc2l6ZV90PiYgbV9tYXA7CisgICAgfTsKKworICAgIE9iamVjdEluZm9Qcm92aWRlciBwcm92
aWRlcihtYXApOworICAgIG1fY2xpZW50LT5kdW1wVW5jb3VudGVkT2JqZWN0cygmcHJvdmlkZXIp
OworfQorCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQmFj
a2VuZChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxl
cigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAppbmRleCA2YTk2NjMx
Mjc1MWM0YmZlNDEzMDI1MmUxYzA2OTUzMTQ4Yzc1ZjRiLi4xZjk2OGYyODkzMTdhNjkxYmQ5MDkz
MzA4ZThhZTMwM2RiNjgzOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGF1dG9ab29tUGFnZVRvRml0V2lkdGgoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+Jik7CisgICAgdmlydHVh
bCB2b2lkIGR1bXBVbmNvdW50ZWRPYmplY3RzKGNvbnN0IEhhc2hNYXA8Y29uc3Qgdm9pZCosIHNp
emVfdD4mKTsKIAogICAgIGludCBob3N0SWQoKSB7IHJldHVybiBtX2hvc3RJZDsgfQogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTJiYzA5NzVm
MmMyYjU3YmUzNWM1NzAxNTAyNmVlYjFlYmM1ZGVlMi4uYzM4NTYxZmMzNTdiYzQ4M2M4YmIxODlm
ZWQ3ZDgzMmYyMzlhZDNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTE3ICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUkgcHJv
dmlkZSBkYXRhIGZvciBtaXhpbmcgd2l0aCB0Y21hbGxvYyBoZWFwIGR1bXBzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjb3VudE9iamVjdFNpemUgbm93
IHJlcXVpcmVzIHBvaW50ZXIgdG8gb2JqZWN0IGFzIHRoZSBmaXJzdCBhcmd1bWVudC4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3Qu
Y3BwOgorCiAyMDEyLTEwLTE3ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFr
b3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtXSzJdW1dUUl0gSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCkgc2hvdWxkIHByaW50IG9ubHkgZmlsZW5h
bWUgcGFydCBvZiBsb2NhbCBVUkxzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCmluZGV4IDc4NDdkN2Qy
NjUzZDZkMDAwMDg0M2VkYjlkZTdlYTRiOTc2OWU3ZDguLmRkNmMzNWM3MmJhMzUzYTY5YzVlMGY0
Y2I5OGVlZjNjNjYwZjU0OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCkBAIC05NSw3ICs5NSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY2xhc3MgQ2xpZW50IDogcHVibGljIFdURjo6TWVt
b3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qg
c2l6ZSkKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiwg
TWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgewogICAg
ICAgICAgICAgVHlwZVRvU2l6ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdG90YWxTaXplcy5h
ZGQob2JqZWN0VHlwZSwgc2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KQo=
</data>
<flag name="review"
          id="182402"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>