<?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>91227</bug_id>
          
          <creation_ts>2012-07-13 06:06:00 -0700</creation_ts>
          <short_desc>Web Inspector: native memory instrumentation: extract instrumentation methods into MemoryClassInfo</short_desc>
          <delta_ts>2012-07-16 04:48:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>91261</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>abarth</cc>
    
    <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>inferno</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>668936</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-13 06:06:00 -0700</bug_when>
    <thetext>The API is not strong enough.
I&apos;d like to modify it. The ideal target at the moment is instrumentation code like this:


void Node::visit(MemoryObjectInfo* memoryObjectInfo) const
{
    MemoryClassInfo&lt;Node&gt; info(memoryObjectInfo, this, MemoryInstrumentation::DOM);

    info.visitBaseClass&lt;ScriptWrappable&gt;(this);
    info.visitBaseClass&lt;AnotherBaseClass&gt;(this);

    info.addMember(m_notInstrumentedPointer); // automatically detects poniter/reference
    info.addMember(m_notInstrumentedObject);  // automatically detects poniter/reference

    info.addInstrumentedMember(m_next);
    info.addInstrumentedMember(m_previous);

    info.addHashSet&lt;MemoryInstrumentation::NonClass&gt;(m_aHash);                // NonClass value_type (report only size of internal template structures)
    info.addHashSet&lt;MemoryInstrumentation::NotInstrumentedClass&gt;(m_aHashSet); // not instrumented value_type (use sizeof)
    info.addHashSet&lt;MemoryInstrumentation::InstrumentedClass&gt;(m_aHashSet);    // instrumented value_type (call visit)

    // the same as for HashSet but for both template arguments
    info.addHashMap&lt;MemoryInstrumentation::NonClass, MemoryInstrumentation::InstrumentedClass&gt;(m_aHashSet);
    info.addHashMap&lt;MemoryInstrumentation::ForwardDeclaredClass, MemoryInstrumentation::InstrumentedClass&gt;(m_aHashSet);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668943</commentid>
    <comment_count>1</comment_count>
      <attachid>152238</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-13 06:10:47 -0700</bug_when>
    <thetext>Created attachment 152238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668946</commentid>
    <comment_count>2</comment_count>
      <attachid>152238</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-13 06:18:33 -0700</bug_when>
    <thetext>Comment on attachment 152238
Patch

Attachment 152238 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13243063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668947</commentid>
    <comment_count>3</comment_count>
      <attachid>152238</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-13 06:20:08 -0700</bug_when>
    <thetext>Comment on attachment 152238
Patch

Attachment 152238 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13236118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668956</commentid>
    <comment_count>4</comment_count>
      <attachid>152238</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-13 06:31:53 -0700</bug_when>
    <thetext>Comment on attachment 152238
Patch

Attachment 152238 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13243066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668957</commentid>
    <comment_count>5</comment_count>
      <attachid>152238</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-13 06:32:08 -0700</bug_when>
    <thetext>Comment on attachment 152238
Patch

Attachment 152238 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13230202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668994</commentid>
    <comment_count>6</comment_count>
      <attachid>152238</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-13 07:14:28 -0700</bug_when>
    <thetext>Comment on attachment 152238
Patch

Attachment 152238 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13232235</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669000</commentid>
    <comment_count>7</comment_count>
      <attachid>152252</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-13 07:21:35 -0700</bug_when>
    <thetext>Created attachment 152252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669008</commentid>
    <comment_count>8</comment_count>
      <attachid>152252</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-13 07:29:22 -0700</bug_when>
    <thetext>Comment on attachment 152252
Patch

Attachment 152252 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13232244</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669012</commentid>
    <comment_count>9</comment_count>
      <attachid>152252</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-13 07:30:39 -0700</bug_when>
    <thetext>Comment on attachment 152252
Patch

Attachment 152252 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13237124</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669016</commentid>
    <comment_count>10</comment_count>
      <attachid>152258</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-13 07:34:25 -0700</bug_when>
    <thetext>Created attachment 152258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669046</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-13 08:09:28 -0700</bug_when>
    <thetext>Committed r122580: &lt;http://trac.webkit.org/changeset/122580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669163</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 10:11:12 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 91261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669189</commentid>
    <comment_count>13</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-07-13 10:24:57 -0700</bug_when>
    <thetext>The patch just needs to be rebaselined and recommitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670242</commentid>
    <comment_count>14</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-16 04:48:31 -0700</bug_when>
    <thetext>Committed r122713: &lt;http://trac.webkit.org/changeset/122713&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152238</attachid>
            <date>2012-07-13 06:10:47 -0700</date>
            <delta_ts>2012-07-13 07:21:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91227-20120713171046.patch</filename>
            <type>text/plain</type>
            <size>26803</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY5YTdkZGE3ZmEwZTk5
ZWE3NjBlMjQ5ZTNkYWY5ZjhiOWQ4ZDY3MS4uNTljODJkOTQ1Mjk0NGMzZTUxMmJiOTQ1NTZhMWI5
YmFiZDI3NGQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA3LTEzICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBuYXRpdmUgbWVtb3J5IGluc3RydW1lbnRhdGlvbjogZXh0cmFjdCBpbnN0cnVtZW50YXRp
b24gbWV0aG9kcyBpbnRvIE1lbW9yeUNsYXNzSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIE1lbW9yeUNsYXNzSW5mbzxOb2RlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgICAgIGluZm8udmlzaXRCYXNlQ2xh
c3M8U2NyaXB0V3JhcHBhYmxlPih0aGlzKTsKKworICAgICAgICAgICAgaW5mby5hZGRNZW1iZXIo
bV9ub3RJbnN0cnVtZW50ZWRQb2ludGVyKTsgLy8gYXV0b21hdGljYWxseSBkZXRlY3RzIHBvbml0
ZXIvcmVmZXJlbmNlCisgICAgICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX25l
eHQpOworICAgICAgICAgICAgaW5mby5hZGRIYXNoU2V0PE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Tm9uQ2xhc3M+KG1fYUhhc2gpOyAgICAgICAgICAgICAgICAvLyBOb25DbGFzcyB2YWx1ZV90eXBl
IChyZXBvcnQgb25seSBzaXplIG9mIGludGVybmFsIHRlbXBsYXRlIHN0cnVjdHVyZXMpCisgICAg
ICAgICAgICBpbmZvLmFkZEhhc2hTZXQ8TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpOb3RJbnN0cnVt
ZW50ZWRDbGFzcz4obV9hSGFzaFNldCk7IC8vIG5vdCBpbnN0cnVtZW50ZWQgdmFsdWVfdHlwZSAo
dXNlIHNpemVvZikKKyAgICAgICAgICAgIGluZm8uYWRkSGFzaFNldDxNZW1vcnlJbnN0cnVtZW50
YXRpb246Okluc3RydW1lbnRlZENsYXNzPihtX2FIYXNoU2V0KTsgICAgLy8gaW5zdHJ1bWVudGVk
IHZhbHVlX3R5cGUgKGNhbGwgdmlzaXQpCisgICAgICAgIH0KKworICAgICAgICBUaGUgY2hhbmdl
IGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgZm9yIG5hdGl2ZSBtZW1vcnkgc25hcHNob3Qu
CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2h1bmtl
ZFRhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
V3JhcHBhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0
eVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNoYXJhY3RlckRhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwb3J0TWVt
b3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9NZW1vcnlJ
bnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmplY3RUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Om9iamVjdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5T2JqZWN0SW5mbzo6bWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKE1lbW9y
eU9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6cmVwb3J0
T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86Ok1lbW9yeUNsYXNzSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnZpc2l0QmFzZUNsYXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydEluc3RydW1lbnRl
ZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydFBvaW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xhc3NJbmZvOjpyZXBvcnRPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xhc3NJbmZvOjpyZXBvcnRIYXNoTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0SGFzaFNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydExpc3RIYXNoU2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0U3RyaW5nKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
ZG9tL1F1YWxpZmllZE5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OlF1
YWxpZmllZE5hbWVJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpR
dWFsaWZpZWROYW1lOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vVHJl
ZVNoYXJlZC5oOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6cmVwb3J0TWVtb3J5VXNh
Z2UpOgorCiAyMDEyLTA3LTEzICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgogICAg
ICAgICBbQ1NTIFJlZ2lvbnNdIEZpeCBidWlsZCBmb3IgYnVnIDg5MDAwCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggOTVlZmQ1MDU5N2UwOGI4YzFhM2Ew
NTY0MTU2MGYxNzFhMjUyMGNmMC4uMDIxYTdjODExOTEzYmUzODAwZGNjNTM1OTdiMDEyZWE3MTdh
NzZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBA
IC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkKiBET01EYXRhU3RvcmU6OmdldERPTVdyYXBwZXJNYXAo
RE9NV3JhcHBlck1hcFR5cGUgdHlwZSkKIAogdm9pZCBET01EYXRhU3RvcmU6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7Ci0gICAg
bWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkJpbmRpbmcpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRl
ZFBvaW50ZXIobV9kb21Ob2RlTWFwKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0
cnVtZW50ZWRQb2ludGVyKG1fYWN0aXZlRG9tTm9kZU1hcCk7Ci0gICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2RvbU9iamVjdE1hcCk7Ci0gICAgbWVtb3J5
T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2FjdGl2ZURvbU9iamVjdE1h
cCk7CisgICAgTWVtb3J5Q2xhc3NJbmZvPERPTURhdGFTdG9yZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpOworICAgIGluZm8ucmVw
b3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2RvbU5vZGVNYXApOworICAgIGluZm8ucmVwb3J0SW5z
dHJ1bWVudGVkUG9pbnRlcihtX2FjdGl2ZURvbU5vZGVNYXApOworICAgIGluZm8ucmVwb3J0SW5z
dHJ1bWVudGVkUG9pbnRlcihtX2RvbU9iamVjdE1hcCk7CisgICAgaW5mby5yZXBvcnRJbnN0cnVt
ZW50ZWRQb2ludGVyKG1fYWN0aXZlRG9tT2JqZWN0TWFwKTsKIH0KIAogLy8gQ2FsbGVkIHdoZW4g
dGhlIG9iamVjdCBpcyBuZWFyIGRlYXRoIChub3QgcmVhY2hhYmxlIGZyb20gSlMgcm9vdHMpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBl
ck1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1h
cC5oCmluZGV4IDUyMzA4YmRjNDNkZTU2OTA4YjAwOGI4NDAyOWQ4YjMzNzcyMDJjZDEuLmUwNzI4
YzI5NWJjZTc4YjlmNWJlY2M2NDQ2Y2YzZGY4MWVhMWM2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmgKQEAgLTEwNCw5ICsx
MDQsOSBAQCBjbGFzcyBDaHVua2VkVGFibGUgewogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKLSAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkJpbmRpbmcpOworICAgICAgICBNZW1vcnlDbGFzc0luZm88Q2h1bmtlZFRhYmxl
PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Qmlu
ZGluZyk7CiAgICAgICAgIGZvciAoQ2h1bmsqIGNodW5rID0gbV9jaHVua3M7IGNodW5rOyBjaHVu
ayA9IGNodW5rLT5tX3ByZXZpb3VzKQotICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVw
b3J0UG9pbnRlcihjaHVuaywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKKyAgICAg
ICAgICAgIGluZm8ucmVwb3J0UG9pbnRlcihjaHVuayk7CiAgICAgfQogCiAgIHByaXZhdGU6CkBA
IC0xODYsOCArMTg2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0IE9WRVJSSURF
CiAgICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7Ci0gICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtX3RhYmxlKTsKKyAgICAgICAgTWVtb3J5Q2xh
c3NJbmZvPEludHJ1c2l2ZURPTVdyYXBwZXJNYXA+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKKyAgICAgICAgaW5mby5yZXBvcnRJ
bnN0cnVtZW50ZWRPYmplY3QobV90YWJsZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAppbmRleCAxYzI4MjMyMTYxNWFk
Zjg4NjE3OTQ4ZWIzYjIwNzUwZDcwZmM5ZDQ5Li44ZjBiY2RiZDhmNjQ0MThlMDk2ODdiNDhiZmRi
NDBjY2RiNjlkMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFw
cGFibGUuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgewot
ICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0UG9p
bnRlcihtX3dyYXBwZXIsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgTWVt
b3J5Q2xhc3NJbmZvPFNjcmlwdFdyYXBwYWJsZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIGluZm8ucmVwb3J0UG9pbnRl
cihtX3dyYXBwZXIpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwCmluZGV4IDgxOThhZDBkNmFjMWU5OTU0OWIwYWMxZTEzOThmZjIxZjA0
ZDkyMTQuLjRjNzY2MjFjOTA0Y2RkNzQxYmIzZjllNzU0MzFhY2QzYTJlYTA5NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtOTIsMTQgKzkyLDE0IEBAIHZv
aWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRpc3Bvc2Uodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiAKIHZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7Ci0gICAgbWVtb3J5T2JqZWN0
SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRp
bmcpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9yYXdUZW1wbGF0ZXMp
OwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV90ZW1wbGF0ZXMpOwotICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtX3N0cmluZ0NhY2hl
KTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRWZWN0b3IobV9kb21EYXRhTGlzdCk7Cisg
ICAgTWVtb3J5Q2xhc3NJbmZvPFY4QmluZGluZ1Blcklzb2xhdGVEYXRhPiBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7CisgICAgaW5m
by5yZXBvcnRIYXNoTWFwKG1fcmF3VGVtcGxhdGVzKTsKKyAgICBpbmZvLnJlcG9ydEhhc2hNYXAo
bV90ZW1wbGF0ZXMpOworICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KG1fc3RyaW5n
Q2FjaGUpOworICAgIGluZm8ucmVwb3J0VmVjdG9yKG1fZG9tRGF0YUxpc3QpOwogCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2RvbURhdGFMaXN0LnNpemUoKTsgaSsrKQotICAgICAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fZG9tRGF0YUxpc3Rb
aV0pOworICAgICAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21EYXRhTGlz
dFtpXSk7CiB9CiAKIC8vIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSBpcyBhIGhlbHBlciBjbGFzcyBm
b3IgdjhFeHRlcm5hbFN0cmluZy4gSXQgaXMgdXNlZApAQCAtNTkwLDggKzU5MCw4IEBAIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUb1N0cmluZ1RlbXBsYXRlKCkKIAog
dm9pZCBTdHJpbmdDYWNoZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmpl
Y3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7Ci0gICAgbWVtb3J5
T2JqZWN0SW5mby0+cmVwb3J0SGFzaE1hcChtX3N0cmluZ0NhY2hlKTsKKyAgICBNZW1vcnlDbGFz
c0luZm88U3RyaW5nQ2FjaGU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKKyAgICBpbmZvLnJlcG9ydEhhc2hNYXAobV9zdHJpbmdD
YWNoZSk7CiB9CiAgICAgCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHY4VmFsdWVUb1dlYkNv
cmVET01TdHJpbmdMaXN0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTU1hcC5oCmluZGV4IDJiNzBjNTgyYjZlNWM3OWZlYjljNTk0NmViNmUz
MzZlYWU4Y2Q3ZDEuLmFhMTkwMTcwMjA3YjA3ZDEyMTM1MDQyOTdlNTEzOGVjZjU2MTZlNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaApAQCAtMTM2LDggKzEzNiw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QgT1ZFUlJJREUKICAg
ICAgICAgewotICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpOwotICAgICAgICAgICAgbWVtb3J5
T2JqZWN0SW5mby0+cmVwb3J0SGFzaE1hcChtX21hcCk7CisgICAgICAgICAgICBNZW1vcnlDbGFz
c0luZm88V2Vha1JlZmVyZW5jZU1hcDxLZXlUeXBlLCBWYWx1ZVR5cGU+ID4gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpOworICAgICAg
ICAgICAgaW5mby5yZXBvcnRIYXNoTWFwKG1fbWFwKTsKICAgICAgICAgfQogCiAgICAgcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKaW5kZXggNmQwNzkwOTI1ODlk
NGQ4ZjY5N2ZkNmYyMDEwOTEwNjJjNjg1MjYwZi4uZGE1MDEzZDEwZDBhNmViMDFjNWZhODUwYjIw
NmQwYTc5MzkxZGY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCkBAIC0x
MTgsOSArMTE4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7Ci0gICAgICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgICAgICBNZW1vcnlDbGFzc0luZm88U3R5bGVQcm9wZXJ0eVNldD4g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7
CiAgICAgICAgIGlmIChtX2lzTXV0YWJsZSkKLSAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8t
PnJlcG9ydFBvaW50ZXIobV9tdXRhYmxlUHJvcGVydHlWZWN0b3IsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q1NTKTsKKyAgICAgICAgICAgIGluZm8ucmVwb3J0UG9pbnRlcihtX211dGFibGVQcm9w
ZXJ0eVZlY3Rvcik7CiAgICAgfQogCiAgICAgdm9pZCBhZG9wdENTU09NV3JhcHBlckZyb20oU3R5
bGVQcm9wZXJ0eVNldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDIy
NWExMzk5ZGUyNTY2NzNlMTc4NWE3MDAyZTUxYTgwODNkOGU0MDAuLjM5NWVmZmEyZDc2OGE3ODg3
YTI5NWU0NTdhZDY5MTJjY2NiMmFjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5j
cHAKQEAgLTk0LDkgKzk0LDkgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5k
RGF0YShjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgZGF0YUxlbmd0aCwKIAogdm9pZCBDaGFy
YWN0ZXJEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAogewotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8o
dGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwotICAgIE5vZGU6OnJlcG9ydE1lbW9y
eVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFN0
cmluZyhtX2RhdGEpOworICAgIE1lbW9yeUNsYXNzSW5mbzxDaGFyYWN0ZXJEYXRhPiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICBp
bmZvLnZpc2l0QmFzZUNsYXNzPE5vZGU+KHRoaXMpOworICAgIGluZm8ucmVwb3J0U3RyaW5nKG1f
ZGF0YSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6YXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IGRhdGEsIEV4Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXgg
NWY1NWM3YmViNDhkMDQyMjJhNTYwNzFhNWRhOTA3N2IyMjE5ZjI1ZS4uZmMyNzUxZTlkYzA5NTU4
YTZkMGZhMDExODg0Y2Y1YmIxMWZkYmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5o
CkBAIC0xMDEsMTAgKzEwMSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAg
ICB7Ci0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwotICAgICAgICBOb2RlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5z
dHJ1bWVudGVkUG9pbnRlcihtX2ZpcnN0Q2hpbGQpOwotICAgICAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fbGFzdENoaWxkKTsKKyAgICAgICAgTWVtb3J5
Q2xhc3NJbmZvPENvbnRhaW5lck5vZGU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPE5v
ZGU+KHRoaXMpOworICAgICAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9maXJz
dENoaWxkKTsKKyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fbGFzdENo
aWxkKTsKICAgICB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI5
MDZmNGU5NGU3ZmQwYzRjYWY1NWQ1OWYzYTFiOGI1ZDJmOWIzNGUuLmQ3YmMzMjg3YWI0YmVkMDFh
ZTIxMmRhMGEzZDk3OGI5MTlkMzNjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjA3
NSwzOCArNjA3NSwzOCBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZXh0RmVhdHVyZXMoUGFzc1Jl
ZlB0cjxDb250ZXh0RmVhdHVyZXM+IGZlYXR1cmVzKQogCiB2b2lkIERvY3VtZW50OjpyZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewot
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpET00pOwotICAgIENvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFZlY3RvcihtX2N1
c3RvbUZvbnRzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV9kb2N1bWVu
dFVSSSk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fYmFzZVRhcmdldCk7
CisgICAgTWVtb3J5Q2xhc3NJbmZvPERvY3VtZW50PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICBpbmZvLnZpc2l0QmFzZUNsYXNz
PENvbnRhaW5lck5vZGU+KHRoaXMpOworICAgIGluZm8ucmVwb3J0VmVjdG9yKG1fY3VzdG9tRm9u
dHMpOworICAgIGluZm8ucmVwb3J0U3RyaW5nKG1fZG9jdW1lbnRVUkkpOworICAgIGluZm8ucmVw
b3J0U3RyaW5nKG1fYmFzZVRhcmdldCk7CiAgICAgaWYgKG1fcGFnZUdyb3VwVXNlclNoZWV0cykK
LSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVjdG9yKCptX3BhZ2VHcm91cFVzZXJT
aGVldHMuZ2V0KCkpOworICAgICAgICBpbmZvLnJlcG9ydFZlY3RvcigqbV9wYWdlR3JvdXBVc2Vy
U2hlZXRzLmdldCgpKTsKICAgICBpZiAobV91c2VyU2hlZXRzKQotICAgICAgICBtZW1vcnlPYmpl
Y3RJbmZvLT5yZXBvcnRWZWN0b3IoKm1fdXNlclNoZWV0cy5nZXQoKSk7Ci0gICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0SGFzaFNldChtX25vZGVJdGVyYXRvcnMpOwotICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydEhhc2hTZXQobV9yYW5nZXMpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJl
cG9ydExpc3RIYXNoU2V0KG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzKTsKLSAgICBtZW1vcnlP
YmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0KTsKLSAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV9zZWxlY3RlZFN0eWxlc2hlZXRTZXQpOwot
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFN0cmluZyhtX3RpdGxlLnN0cmluZygpKTsKLSAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV9yYXdUaXRsZS5zdHJpbmcoKSk7Ci0g
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1feG1sRW5jb2RpbmcpOwotICAgIG1l
bW9yeU9iamVjdEluZm8tPnJlcG9ydFN0cmluZyhtX3htbFZlcnNpb24pOwotICAgIG1lbW9yeU9i
amVjdEluZm8tPnJlcG9ydFN0cmluZyhtX2NvbnRlbnRMYW5ndWFnZSk7Ci0gICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0SGFzaE1hcChtX2RvY3VtZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMpOwot
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV93aW5kb3dOYW1lZEl0ZW1Db2xs
ZWN0aW9ucyk7CisgICAgICAgIGluZm8ucmVwb3J0VmVjdG9yKCptX3VzZXJTaGVldHMuZ2V0KCkp
OworICAgIGluZm8ucmVwb3J0SGFzaFNldChtX25vZGVJdGVyYXRvcnMpOworICAgIGluZm8ucmVw
b3J0SGFzaFNldChtX3Jhbmdlcyk7CisgICAgaW5mby5yZXBvcnRMaXN0SGFzaFNldChtX3N0eWxl
U2hlZXRDYW5kaWRhdGVOb2Rlcyk7CisgICAgaW5mby5yZXBvcnRTdHJpbmcobV9wcmVmZXJyZWRT
dHlsZXNoZWV0U2V0KTsKKyAgICBpbmZvLnJlcG9ydFN0cmluZyhtX3NlbGVjdGVkU3R5bGVzaGVl
dFNldCk7CisgICAgaW5mby5yZXBvcnRTdHJpbmcobV90aXRsZS5zdHJpbmcoKSk7CisgICAgaW5m
by5yZXBvcnRTdHJpbmcobV9yYXdUaXRsZS5zdHJpbmcoKSk7CisgICAgaW5mby5yZXBvcnRTdHJp
bmcobV94bWxFbmNvZGluZyk7CisgICAgaW5mby5yZXBvcnRTdHJpbmcobV94bWxWZXJzaW9uKTsK
KyAgICBpbmZvLnJlcG9ydFN0cmluZyhtX2NvbnRlbnRMYW5ndWFnZSk7CisgICAgaW5mby5yZXBv
cnRIYXNoTWFwKG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucyk7CisgICAgaW5mby5yZXBv
cnRIYXNoTWFwKG1fd2luZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMpOwogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRWZWN0b3IobV9kYXNo
Ym9hcmRSZWdpb25zKTsKKyAgICBpbmZvLnJlcG9ydFZlY3RvcihtX2Rhc2hib2FyZFJlZ2lvbnMp
OwogI2VuZGlmCi0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SGFzaE1hcChtX2Nzc0NhbnZh
c0VsZW1lbnRzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRWZWN0b3IobV9pY29uVVJM
cyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SGFzaFNldChtX2RvY3VtZW50U3VzcGVu
c2lvbkNhbGxiYWNrRWxlbWVudHMpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hT
ZXQobV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHMpOwotICAgIG1lbW9yeU9iamVjdEluZm8t
PnJlcG9ydEhhc2hTZXQobV9wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRFbGVtZW50cyk7Ci0g
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SGFzaE1hcChtX2VsZW1lbnRzQnlBY2Nlc3NLZXkp
OwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hTZXQobV9tZWRpYUNhblN0YXJ0TGlz
dGVuZXJzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRWZWN0b3IobV9wZW5kaW5nVGFz
a3MpOworICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX2Nzc0NhbnZhc0VsZW1lbnRzKTsKKyAgICBp
bmZvLnJlcG9ydFZlY3RvcihtX2ljb25VUkxzKTsKKyAgICBpbmZvLnJlcG9ydEhhc2hTZXQobV9k
b2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRzKTsKKyAgICBpbmZvLnJlcG9ydEhhc2hT
ZXQobV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHMpOworICAgIGluZm8ucmVwb3J0SGFzaFNl
dChtX3ByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzKTsKKyAgICBpbmZvLnJlcG9y
dEhhc2hNYXAobV9lbGVtZW50c0J5QWNjZXNzS2V5KTsKKyAgICBpbmZvLnJlcG9ydEhhc2hTZXQo
bV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJzKTsKKyAgICBpbmZvLnJlcG9ydFZlY3RvcihtX3BlbmRp
bmdUYXNrcyk7CiB9CiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggYmUzMDUyYWQ4MTkwMWM5Y2UwMmY0NzY1MjI3YmY4MjZjOWNhMzNlNC4uNTY3ZjkzZWZm
MmI4NTUzOGU3NTQ4N2VkOTkyODM2YzliYWRlYzhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00
MzAsMTAgKzQzMCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7Ci0g
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpET00pOwotICAgICAgICBDb250YWluZXJOb2RlOjpyZXBvcnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
SW5zdHJ1bWVudGVkT2JqZWN0KG1fdGFnTmFtZSk7Ci0gICAgICAgIG1lbW9yeU9iamVjdEluZm8t
PnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9hdHRyaWJ1dGVEYXRhLmdldCgpKTsKKyAgICAg
ICAgTWVtb3J5Q2xhc3NJbmZvPEVsZW1lbnQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBpbmZvLnZpc2l0QmFzZUNsYXNz
PENvbnRhaW5lck5vZGU+KHRoaXMpOworICAgICAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZE9i
amVjdChtX3RhZ05hbWUpOworICAgICAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIo
bV9hdHRyaWJ1dGVEYXRhLmdldCgpKTsKICAgICB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXggODY0NjZmZGIxZWVkN2YxM2ZmMDBl
YTUxNzg2YTYyMjdhY2MyNzM3Yy4uZmFkNTVmOWI3NWM1ZWFkYWMxNTU2N2E5MWM5Yjg4MGE1MTc5
NjlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKQEAgLTEw
NCwxMyArMTA0LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7Ci0gICAgICAgIG1l
bW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpET00pOwotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQ
b2ludGVyKG1faW5saW5lU3R5bGVEZWNsLmdldCgpKTsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2F0dHJpYnV0ZVN0eWxlLmdldCgpKTsKLSAg
ICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fY2xhc3NOYW1lcyk7Ci0gICAg
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX2lkRm9yU3R5bGVSZXNvbHV0aW9u
KTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPEVsZW1lbnRBdHRyaWJ1dGVEYXRhPiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAg
ICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1faW5saW5lU3R5bGVEZWNsLmdldCgp
KTsKKyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlU3R5
bGUuZ2V0KCkpOworICAgICAgICBpbmZvLnJlcG9ydE9iamVjdChtX2NsYXNzTmFtZXMpOworICAg
ICAgICBpbmZvLnJlcG9ydE9iamVjdChtX2lkRm9yU3R5bGVSZXNvbHV0aW9uKTsKICAgICAgICAg
aWYgKG1faXNNdXRhYmxlKQotICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0UG9p
bnRlcihtX211dGFibGVBdHRyaWJ1dGVWZWN0b3IsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9N
KTsKKyAgICAgICAgICAgIGluZm8ucmVwb3J0UG9pbnRlcihtX211dGFibGVBdHRyaWJ1dGVWZWN0
b3IpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVt
ZW50YXRpb24uaAppbmRleCA3YTBkNDFjNTA1MGIwOTExZGZiNDQ1ODMyNWEzODkxNzVlYzE1YTNl
Li5kNmYxMTNiM2EzZjAyNmIyOWZjZTFhYmZjNjk5M2Y4ODZmZjZkZDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC04MSw4ICs4MSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE1lbW9yeU9iamVjdElu
Zm87Ci0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIGNsYXNzIE1lbW9yeUNsYXNz
SW5mbzsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBjbGFzcyBJbnN0cnVtZW50ZWRQ
b2ludGVyIDogcHVibGljIEluc3RydW1lbnRlZFBvaW50ZXJCYXNlIHsKICAgICBwdWJsaWM6CkBA
IC0xMDgsMjkgKzEwNywxNSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9vYmplY3RTaXplKDApCiAg
ICAgIHsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+Ci0gICAgdm9pZCByZXBvcnRJbnN0
cnVtZW50ZWRQb2ludGVyKGNvbnN0IFAqIG1lbWJlclBvaW50ZXIpCi0gICAgewotICAgICAgICBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtZW1iZXJQ
b2ludGVyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KLSAgICB2b2lkIHJl
cG9ydFBvaW50ZXIoY29uc3QgUCogcG9pbnRlciwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RUeXBlIG9iamVjdFR5cGUpCi0gICAgewotICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlv
bi0+cmVwb3J0UG9pbnRlcihwb2ludGVyLCBvYmplY3RUeXBlKTsKLSAgICB9CisgICAgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X29iamVjdFR5cGU7IH0KKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0U2l6ZTsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZXBv
cnRJbnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgbWVtYmVyT2JqZWN0KQotICAgIHsKLSAgICAg
ICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtZW1i
ZXJPYmplY3QpOwotICAgIH0KKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3Ry
dW1lbnRhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOyB9CiAKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHJlcG9ydE9iamVjdChjb25zdCBUJiBvYmpl
Y3QpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydE9iamVjdChvYmplY3QpOyB9Citw
cml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgTWVtb3J5Q2xh
c3NJbmZvOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZXBvcnRPYmpl
Y3RJbmZvKGNvbnN0IFQqLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0
VHlwZSkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCByZXBvcnRPYmplY3RJbmZvKGNv
bnN0IFQqLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSkKICAg
ICB7CiAgICAgICAgIGlmIChtX29iamVjdFR5cGUgIT0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
dGhlcikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOCw0NCArMTIzLDQxIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9vYmplY3RTaXplID0gc2l6ZW9mKFQpOwogICAgIH0KIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4KLSAgICB2b2lkIHJlcG9ydEhhc2hNYXAoY29uc3QgSGFz
aE1hcFR5cGUmIG1hcCkKLSAgICB7Ci0gICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5y
ZXBvcnRIYXNoTWFwKG1hcCwgb2JqZWN0VHlwZSgpLCB0cnVlKTsKLSAgICB9CisgICAgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsKKyAgICBNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok9iamVjdFR5cGUgbV9vYmplY3RUeXBlOworICAgIHNpemVfdCBtX29iamVj
dFNpemU7Cit9OwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPgotICAgIHZv
aWQgcmVwb3J0SGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYgc2V0KQordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBNZW1vcnlDbGFzc0luZm8geworcHVibGljOgorICAgIE1lbW9yeUNsYXNz
SW5mbyhNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvLCBjb25zdCBUKiBwdHIsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKQorICAgICAgICA6IG1f
bWVtb3J5T2JqZWN0SW5mbyhtZW1vcnlPYmplY3RJbmZvKQorICAgICAgICAsIG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uKG1lbW9yeU9iamVjdEluZm8tPm1lbW9yeUluc3RydW1lbnRhdGlvbigpKQog
ICAgIHsKLSAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydEhhc2hTZXQoc2V0
LCBvYmplY3RUeXBlKCksIHRydWUpOworICAgICAgICBtX21lbW9yeU9iamVjdEluZm8tPnJlcG9y
dE9iamVjdEluZm8ocHRyLCBvYmplY3RUeXBlKTsKKyAgICAgICAgbV9vYmplY3RUeXBlID0gbWVt
b3J5T2JqZWN0SW5mby0+b2JqZWN0VHlwZSgpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBMaXN0SGFzaFNldFR5cGU+Ci0gICAgdm9pZCByZXBvcnRMaXN0SGFzaFNldChjb25zdCBM
aXN0SGFzaFNldFR5cGUmIHNldCkKLSAgICB7Ci0gICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0
aW9uLT5yZXBvcnRMaXN0SGFzaFNldChzZXQsIG9iamVjdFR5cGUoKSwgdHJ1ZSk7Ci0gICAgfQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPiB2b2lkIHZpc2l0QmFzZUNsYXNzKGNvbnN0IFAqIHB0
cikgeyBwdHItPlA6OnJlcG9ydE1lbW9yeVVzYWdlKG1fbWVtb3J5T2JqZWN0SW5mbyk7IH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBlPgotICAgIHZvaWQgcmVwb3J0VmVjdG9y
KGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikKLSAgICB7Ci0gICAgICAgIG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5yZXBvcnRWZWN0b3IodmVjdG9yLCBvYmplY3RUeXBlKCksIHRydWUpOwotICAg
IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4gdm9pZCByZXBvcnRJbnN0cnVtZW50ZWRQb2lu
dGVyKGNvbnN0IFAqIG1lbWJlclBvaW50ZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJl
cG9ydEluc3RydW1lbnRlZFBvaW50ZXIobWVtYmVyUG9pbnRlcik7IH0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTz4gdm9pZCByZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QoY29uc3QgTyYgbWVtYmVy
T2JqZWN0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50ZWRPYmpl
Y3QobWVtYmVyT2JqZWN0KTsgfQogCi0gICAgdm9pZCByZXBvcnRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCi0gICAgewotICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0
U3RyaW5nKG9iamVjdFR5cGUoKSwgc3RyaW5nKTsKLSAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFA+IHZvaWQgcmVwb3J0UG9pbnRlcihjb25zdCBQKiBwb2ludGVyKSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5yZXBvcnRQb2ludGVyKHBvaW50ZXIsIG1fb2JqZWN0VHlwZSk7IH0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTz4gdm9pZCByZXBvcnRPYmplY3QoY29uc3QgTyYgb2JqZWN0
KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRPYmplY3Qob2JqZWN0KTsgfQogCi0g
ICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX29iamVjdFR5cGU7IH0KLSAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb2JqZWN0U2l6ZTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlw
ZT4gdm9pZCByZXBvcnRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPnJlcG9ydEhhc2hNYXAobWFwLCBtX29iamVjdFR5cGUsIHRydWUpOyB9
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIHJlcG9ydEhhc2hTZXQo
Y29uc3QgSGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0
SGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIHJlcG9ydExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNo
U2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRMaXN0SGFzaFNl
dChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVj
dG9yVHlwZT4gdm9pZCByZXBvcnRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRWZWN0b3IodmVjdG9yLCBtX29iamVjdFR5cGUs
IHRydWUpOyB9CiAKLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRh
dGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOyB9CisgICAgdm9pZCByZXBv
cnRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24t
PnJlcG9ydFN0cmluZyhtX29iamVjdFR5cGUsIHN0cmluZyk7IH0KIAotIHByaXZhdGU6Citwcml2
YXRlOgorICAgIE1lbW9yeU9iamVjdEluZm8qIG1fbWVtb3J5T2JqZWN0SW5mbzsKICAgICBNZW1v
cnlJbnN0cnVtZW50YXRpb24qIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOwogICAgIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7Ci0gICAgc2l6ZV90IG1fb2Jq
ZWN0U2l6ZTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4
IDlkODNjOTdlOTU3ZWQ0OTE4YTYzZmZmZDMwZWUxZTQ4NjU5MmQxNzQuLjkzNDgxYTMzYjkxOTBi
OTI1OTkyMGEyYzRlYjUyMTFmYTY0Yjg2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI4MDEsMTIg
KzI4MDEsMTIgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiAKIHZvaWQgTm9kZTo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IHsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+
OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBTY3JpcHRXcmFwcGFi
bGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwotICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydFBvaW50ZXIobV9kb2N1bWVudCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpE
T00pOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9u
ZXh0KTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1f
cHJldmlvdXMpOworICAgIE1lbW9yeUNsYXNzSW5mbzxOb2RlPiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICBpbmZvLnZpc2l0QmFz
ZUNsYXNzPFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT4gPih0aGlzKTsKKyAgICBpbmZv
LnZpc2l0QmFzZUNsYXNzPFNjcmlwdFdyYXBwYWJsZT4odGhpcyk7CisgICAgaW5mby5yZXBvcnRJ
bnN0cnVtZW50ZWRQb2ludGVyKG1fZG9jdW1lbnQpOworICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVu
dGVkUG9pbnRlcihtX25leHQpOworICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlciht
X3ByZXZpb3VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFs
aWZpZWROYW1lLmgKaW5kZXggMTkwN2I4Nzc0YjY3Y2UxOTA4NWU5Y2E2Y2Y1ZDM5ZmQ0YzNiNDc2
YS4uMjg0NWU3NzU5YWY1MDAzMjM3M2I0MTQ0OGMxOTI2YWE3ZWE3ZTY3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5oCkBAIC01MiwxMSArNTIsMTEgQEAgcHVibGljOgogCiAgICAgICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Ci0gICAgICAgICAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9wcmVmaXgpOwotICAgICAgICAgICAg
bWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fbG9jYWxOYW1lKTsKLSAgICAgICAgICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX25hbWVzcGFjZSk7Ci0gICAgICAgICAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9sb2NhbE5hbWVVcHBlcik7CisgICAg
ICAgICAgICBNZW1vcnlDbGFzc0luZm88UXVhbGlmaWVkTmFtZUltcGw+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICAgICAg
aW5mby5yZXBvcnRPYmplY3QobV9wcmVmaXgpOworICAgICAgICAgICAgaW5mby5yZXBvcnRPYmpl
Y3QobV9sb2NhbE5hbWUpOworICAgICAgICAgICAgaW5mby5yZXBvcnRPYmplY3QobV9uYW1lc3Bh
Y2UpOworICAgICAgICAgICAgaW5mby5yZXBvcnRPYmplY3QobV9sb2NhbE5hbWVVcHBlcik7CiAg
ICAgICAgIH0KICAgICBwcml2YXRlOgogICAgICAgICBRdWFsaWZpZWROYW1lSW1wbChjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiAgICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAg
bWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2ltcGwpOworICAg
ICAgICBNZW1vcnlDbGFzc0luZm88UXVhbGlmaWVkTmFtZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIGluZm8ucmVwb3J0
SW5zdHJ1bWVudGVkUG9pbnRlcihtX2ltcGwpOwogICAgIH0KIHByaXZhdGU6CiAgICAgdm9pZCBp
bml0KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVHJlZVNoYXJlZC5oCmluZGV4IDZjNDE1NGVkZTdhYzk3MjgyYjU0NzY5NTgzOTMzYmY0NjYz
ZjE0ODIuLjQ0ZGMxNmZiZmE4ZDE2MjZhZmQwZmRiZDIwM2IyZTY5Y2VmYjY1NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTExMyw4ICsxMTMsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiAgICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmpl
Y3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgbWVtb3J5
T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3BhcmVudCk7CisgICAgICAg
IE1lbW9yeUNsYXNzSW5mbzxUcmVlU2hhcmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4gPiBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsK
KyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fcGFyZW50KTsKICAgICB9
CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152252</attachid>
            <date>2012-07-13 07:21:35 -0700</date>
            <delta_ts>2012-07-13 07:34:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91227-20120713182133.patch</filename>
            <type>text/plain</type>
            <size>27500</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY5YTdkZGE3ZmEwZTk5
ZWE3NjBlMjQ5ZTNkYWY5ZjhiOWQ4ZDY3MS4uNTljODJkOTQ1Mjk0NGMzZTUxMmJiOTQ1NTZhMWI5
YmFiZDI3NGQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA3LTEzICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBuYXRpdmUgbWVtb3J5IGluc3RydW1lbnRhdGlvbjogZXh0cmFjdCBpbnN0cnVtZW50YXRp
b24gbWV0aG9kcyBpbnRvIE1lbW9yeUNsYXNzSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIE1lbW9yeUNsYXNzSW5mbzxOb2RlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgICAgIGluZm8udmlzaXRCYXNlQ2xh
c3M8U2NyaXB0V3JhcHBhYmxlPih0aGlzKTsKKworICAgICAgICAgICAgaW5mby5hZGRNZW1iZXIo
bV9ub3RJbnN0cnVtZW50ZWRQb2ludGVyKTsgLy8gYXV0b21hdGljYWxseSBkZXRlY3RzIHBvbml0
ZXIvcmVmZXJlbmNlCisgICAgICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX25l
eHQpOworICAgICAgICAgICAgaW5mby5hZGRIYXNoU2V0PE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Tm9uQ2xhc3M+KG1fYUhhc2gpOyAgICAgICAgICAgICAgICAvLyBOb25DbGFzcyB2YWx1ZV90eXBl
IChyZXBvcnQgb25seSBzaXplIG9mIGludGVybmFsIHRlbXBsYXRlIHN0cnVjdHVyZXMpCisgICAg
ICAgICAgICBpbmZvLmFkZEhhc2hTZXQ8TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpOb3RJbnN0cnVt
ZW50ZWRDbGFzcz4obV9hSGFzaFNldCk7IC8vIG5vdCBpbnN0cnVtZW50ZWQgdmFsdWVfdHlwZSAo
dXNlIHNpemVvZikKKyAgICAgICAgICAgIGluZm8uYWRkSGFzaFNldDxNZW1vcnlJbnN0cnVtZW50
YXRpb246Okluc3RydW1lbnRlZENsYXNzPihtX2FIYXNoU2V0KTsgICAgLy8gaW5zdHJ1bWVudGVk
IHZhbHVlX3R5cGUgKGNhbGwgdmlzaXQpCisgICAgICAgIH0KKworICAgICAgICBUaGUgY2hhbmdl
IGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgZm9yIG5hdGl2ZSBtZW1vcnkgc25hcHNob3Qu
CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2h1bmtl
ZFRhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
V3JhcHBhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0
eVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNoYXJhY3RlckRhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwb3J0TWVt
b3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9NZW1vcnlJ
bnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmplY3RUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Om9iamVjdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5T2JqZWN0SW5mbzo6bWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKE1lbW9y
eU9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6cmVwb3J0
T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86Ok1lbW9yeUNsYXNzSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnZpc2l0QmFzZUNsYXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydEluc3RydW1lbnRl
ZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydFBvaW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xhc3NJbmZvOjpyZXBvcnRPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xhc3NJbmZvOjpyZXBvcnRIYXNoTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0SGFzaFNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydExpc3RIYXNoU2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0U3RyaW5nKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
ZG9tL1F1YWxpZmllZE5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OlF1
YWxpZmllZE5hbWVJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpR
dWFsaWZpZWROYW1lOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vVHJl
ZVNoYXJlZC5oOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6cmVwb3J0TWVtb3J5VXNh
Z2UpOgorCiAyMDEyLTA3LTEzICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgogICAg
ICAgICBbQ1NTIFJlZ2lvbnNdIEZpeCBidWlsZCBmb3IgYnVnIDg5MDAwCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAppbmRleCAyZDkyYmI0NTViMzIyODIzYmU2
ZTEwNDAyMmU3MTUyZGU4MWQ4OWE3Li45ZTgwYWEyOTE3OWU4ZDVmYTEzYWZkNTEyYjUyZmNjMmVi
NWQ4Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUu
aApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgewotICAgICAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6RE9NKTsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1f
d3JhcHBlcik7CisgICAgICAgIENsYXNzT2JqZWN0SW5mbzxTY3JpcHRXcmFwcGFibGU+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAg
ICAgICBpbmZvLnJlcG9ydE9iamVjdChtX3dyYXBwZXIpOwogICAgIH0KIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCmluZGV4IDk1ZWZkNTA1
OTdlMDhiOGMxYTNhMDU2NDE1NjBmMTcxYTI1MjBjZjAuLjAyMWE3YzgxMTkxM2JlMzgwMGRjYzUz
NTk3YjAxMmVhNzE3YTc2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmNwcApAQCAtMTIxLDExICsxMjEsMTEgQEAgdm9pZCogRE9NRGF0YVN0b3JlOjpnZXRE
T01XcmFwcGVyTWFwKERPTVdyYXBwZXJNYXBUeXBlIHR5cGUpCiAKIHZvaWQgRE9NRGF0YVN0b3Jl
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fZG9tTm9kZU1hcCk7Ci0gICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2FjdGl2ZURvbU5vZGVNYXApOwotICAgIG1l
bW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21PYmplY3RNYXAp
OwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9hY3Rp
dmVEb21PYmplY3RNYXApOworICAgIE1lbW9yeUNsYXNzSW5mbzxET01EYXRhU3RvcmU+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsK
KyAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21Ob2RlTWFwKTsKKyAgICBp
bmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9hY3RpdmVEb21Ob2RlTWFwKTsKKyAgICBp
bmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21PYmplY3RNYXApOworICAgIGluZm8u
cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2FjdGl2ZURvbU9iamVjdE1hcCk7CiB9CiAKIC8v
IENhbGxlZCB3aGVuIHRoZSBvYmplY3QgaXMgbmVhciBkZWF0aCAobm90IHJlYWNoYWJsZSBmcm9t
IEpTIHJvb3RzKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1
c2l2ZURPTVdyYXBwZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2
ZURPTVdyYXBwZXJNYXAuaAppbmRleCA1MjMwOGJkYzQzZGU1NjkwOGIwMDhiODQwMjlkOGIzMzc3
MjAyY2QxLi5lMDcyOGMyOTViY2U3OGI5ZjViZWNjNjQ0NmNmM2RmODFlYTFjNjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5o
CkBAIC0xMDQsOSArMTA0LDkgQEAgY2xhc3MgQ2h1bmtlZFRhYmxlIHsKIAogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
ICAgICB7Ci0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZv
PENodW5rZWRUYWJsZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkJpbmRpbmcpOwogICAgICAgICBmb3IgKENodW5rKiBjaHVuayA9IG1fY2h1bmtz
OyBjaHVuazsgY2h1bmsgPSBjaHVuay0+bV9wcmV2aW91cykKLSAgICAgICAgICAgIG1lbW9yeU9i
amVjdEluZm8tPnJlcG9ydFBvaW50ZXIoY2h1bmssIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Qmlu
ZGluZyk7CisgICAgICAgICAgICBpbmZvLnJlcG9ydFBvaW50ZXIoY2h1bmspOwogICAgIH0KIAog
ICBwcml2YXRlOgpAQCAtMTg2LDggKzE4Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpOwotICAgICAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QobV90YWJsZSk7CisgICAg
ICAgIE1lbW9yeUNsYXNzSW5mbzxJbnRydXNpdmVET01XcmFwcGVyTWFwPiBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7CisgICAgICAg
IGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KG1fdGFibGUpOwogICAgIH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJs
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKaW5kZXgg
MWMyODIzMjE2MTVhZGY4ODYxNzk0OGViM2IyMDc1MGQ3MGZjOWQ0OS4uOGYwYmNkYmQ4ZjY0NDE4
ZTA5Njg3YjQ4YmZkYjQwY2NkYjY5ZDE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0V3JhcHBhYmxlLmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogICAgIHsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Ci0gICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydFBvaW50ZXIobV93cmFwcGVyLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7
CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxTY3JpcHRXcmFwcGFibGU+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBpbmZv
LnJlcG9ydFBvaW50ZXIobV93cmFwcGVyKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA4MTk4YWQwZDZhYzFlOTk1NDliMGFj
MWUxMzk4ZmYyMWYwNGQ5MjE0Li40Yzc2NjIxYzkwNGNkZDc0MWJiM2Y5ZTc1NDMxYWNkM2EyZWEw
OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTkyLDE0
ICs5MiwxNCBAQCB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkaXNwb3NlKHY4OjpJc29s
YXRlKiBpc29sYXRlKQogCiB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewotICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpCaW5kaW5nKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoTWFwKG1f
cmF3VGVtcGxhdGVzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoTWFwKG1fdGVt
cGxhdGVzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRPYmplY3Qo
bV9zdHJpbmdDYWNoZSk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVjdG9yKG1fZG9t
RGF0YUxpc3QpOworICAgIE1lbW9yeUNsYXNzSW5mbzxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YT4g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRp
bmcpOworICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX3Jhd1RlbXBsYXRlcyk7CisgICAgaW5mby5y
ZXBvcnRIYXNoTWFwKG1fdGVtcGxhdGVzKTsKKyAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZE9i
amVjdChtX3N0cmluZ0NhY2hlKTsKKyAgICBpbmZvLnJlcG9ydFZlY3RvcihtX2RvbURhdGFMaXN0
KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kb21EYXRhTGlzdC5zaXplKCk7IGkr
KykKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlciht
X2RvbURhdGFMaXN0W2ldKTsKKyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVy
KG1fZG9tRGF0YUxpc3RbaV0pOwogfQogCiAvLyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgaXMgYSBo
ZWxwZXIgY2xhc3MgZm9yIHY4RXh0ZXJuYWxTdHJpbmcuIEl0IGlzIHVzZWQKQEAgLTU5MCw4ICs1
OTAsOCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VG9TdHJpbmdU
ZW1wbGF0ZSgpCiAKIHZvaWQgU3RyaW5nQ2FjaGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7Ci0gICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcp
OwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9zdHJpbmdDYWNoZSk7Cisg
ICAgTWVtb3J5Q2xhc3NJbmZvPFN0cmluZ0NhY2hlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7CisgICAgaW5mby5yZXBvcnRIYXNo
TWFwKG1fc3RyaW5nQ2FjaGUpOwogfQogICAgIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2
OFZhbHVlVG9XZWJDb3JlRE9NU3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAppbmRleCAyYjcwYzU4MmI2ZTVjNzlm
ZWI5YzU5NDZlYjZlMzM2ZWFlOGNkN2QxLi5hYTE5MDE3MDIwN2IwN2QxMjEzNTA0Mjk3ZTUxMzhl
Y2Y1NjE2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1h
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKQEAgLTEzNiw4
ICsxMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
IE9WRVJSSURFCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9y
dE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKLSAgICAg
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9tYXApOworICAgICAgICAg
ICAgTWVtb3J5Q2xhc3NJbmZvPFdlYWtSZWZlcmVuY2VNYXA8S2V5VHlwZSwgVmFsdWVUeXBlPiA+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5k
aW5nKTsKKyAgICAgICAgICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX21hcCk7CiAgICAgICAgIH0K
IAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4
IDZkMDc5MDkyNTg5ZDRkOGY2OTdmZDZmMjAxMDkxMDYyYzY4NTI2MGYuLmRhNTAxM2QxMGQwYTZl
YjAxYzVmYTg1MGIyMDZkMGE3OTM5MWRmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuaApAQCAtMTE4LDkgKzExOCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAg
ICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFN0eWxl
UHJvcGVydHlTZXQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOwogICAgICAgICBpZiAobV9pc011dGFibGUpCi0gICAgICAgICAgICBtZW1v
cnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fbXV0YWJsZVByb3BlcnR5VmVjdG9yLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgICAgICAgICBpbmZvLnJlcG9ydFBvaW50ZXIo
bV9tdXRhYmxlUHJvcGVydHlWZWN0b3IpOwogICAgIH0KIAogICAgIHZvaWQgYWRvcHRDU1NPTVdy
YXBwZXJGcm9tKFN0eWxlUHJvcGVydHlTZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcAppbmRleCAyMjVhMTM5OWRlMjU2NjczZTE3ODVhNzAwMmU1MWE4MDgzZDhlNDAwLi4zOTVl
ZmZhMmQ3NjhhNzg4N2EyOTVlNDU3YWQ2OTEyY2NjYjJhYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCkBAIC05NCw5ICs5NCw5IEBAIHVuc2lnbmVkIENoYXJhY3RlckRhdGE6
OnBhcnNlckFwcGVuZERhdGEoY29uc3QgVUNoYXIqIGRhdGEsIHVuc2lnbmVkIGRhdGFMZW5ndGgs
CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICBOb2Rl
OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBtZW1vcnlPYmplY3RJ
bmZvLT5yZXBvcnRTdHJpbmcobV9kYXRhKTsKKyAgICBNZW1vcnlDbGFzc0luZm88Q2hhcmFjdGVy
RGF0YT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSk7CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxOb2RlPih0aGlzKTsKKyAgICBpbmZvLnJl
cG9ydFN0cmluZyhtX2RhdGEpOwogfQogCiB2b2lkIENoYXJhY3RlckRhdGE6OmFwcGVuZERhdGEo
Y29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCmluZGV4IDVmNTVjN2JlYjQ4ZDA0MjIyYTU2MDcxYTVkYTkwNzdiMjIxOWYyNWUuLmZj
Mjc1MWU5ZGMwOTU1OGE2ZDBmYTAxMTg4NGNmNWJiMTFmZGJiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaApAQCAtMTAxLDEwICsxMDEsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiAgICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJ
bmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgTm9kZTo6cmVw
b3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9maXJzdENoaWxkKTsKLSAgICAgICAgbWVt
b3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2xhc3RDaGlsZCk7Cisg
ICAgICAgIE1lbW9yeUNsYXNzSW5mbzxDb250YWluZXJOb2RlPiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgaW5mby52aXNp
dEJhc2VDbGFzczxOb2RlPih0aGlzKTsKKyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQ
b2ludGVyKG1fZmlyc3RDaGlsZCk7CisgICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9p
bnRlcihtX2xhc3RDaGlsZCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCAyOTA2ZjRlOTRlN2ZkMGM0Y2FmNTVkNTlmM2ExYjhiNWQyZjliMzRlLi5kN2Jj
MzI4N2FiNGJlZDAxYWUyMTJkYTBhM2Q5NzhiOTE5ZDMzYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTYwNzUsMzggKzYwNzUsMzggQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGV4dEZl
YXR1cmVzKFBhc3NSZWZQdHI8Q29udGV4dEZlYXR1cmVzPiBmZWF0dXJlcykKIAogdm9pZCBEb2N1
bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKIHsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICBDb250YWluZXJOb2RlOjpyZXBvcnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRWZWN0b3IobV9jdXN0b21Gb250cyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3Ry
aW5nKG1fZG9jdW1lbnRVUkkpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFN0cmluZyht
X2Jhc2VUYXJnZXQpOworICAgIE1lbW9yeUNsYXNzSW5mbzxEb2N1bWVudD4gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgaW5mby52
aXNpdEJhc2VDbGFzczxDb250YWluZXJOb2RlPih0aGlzKTsKKyAgICBpbmZvLnJlcG9ydFZlY3Rv
cihtX2N1c3RvbUZvbnRzKTsKKyAgICBpbmZvLnJlcG9ydFN0cmluZyhtX2RvY3VtZW50VVJJKTsK
KyAgICBpbmZvLnJlcG9ydFN0cmluZyhtX2Jhc2VUYXJnZXQpOwogICAgIGlmIChtX3BhZ2VHcm91
cFVzZXJTaGVldHMpCi0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFZlY3RvcigqbV9w
YWdlR3JvdXBVc2VyU2hlZXRzLmdldCgpKTsKKyAgICAgICAgaW5mby5yZXBvcnRWZWN0b3IoKm1f
cGFnZUdyb3VwVXNlclNoZWV0cy5nZXQoKSk7CiAgICAgaWYgKG1fdXNlclNoZWV0cykKLSAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVjdG9yKCptX3VzZXJTaGVldHMuZ2V0KCkpOwot
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hTZXQobV9ub2RlSXRlcmF0b3JzKTsKLSAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoU2V0KG1fcmFuZ2VzKTsKLSAgICBtZW1vcnlP
YmplY3RJbmZvLT5yZXBvcnRMaXN0SGFzaFNldChtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcyk7
Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fcHJlZmVycmVkU3R5bGVzaGVl
dFNldCk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fc2VsZWN0ZWRTdHls
ZXNoZWV0U2V0KTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV90aXRsZS5z
dHJpbmcoKSk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fcmF3VGl0bGUu
c3RyaW5nKCkpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFN0cmluZyhtX3htbEVuY29k
aW5nKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV94bWxWZXJzaW9uKTsK
LSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV9jb250ZW50TGFuZ3VhZ2UpOwot
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9kb2N1bWVudE5hbWVkSXRlbUNv
bGxlY3Rpb25zKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoTWFwKG1fd2luZG93
TmFtZWRJdGVtQ29sbGVjdGlvbnMpOworICAgICAgICBpbmZvLnJlcG9ydFZlY3RvcigqbV91c2Vy
U2hlZXRzLmdldCgpKTsKKyAgICBpbmZvLnJlcG9ydEhhc2hTZXQobV9ub2RlSXRlcmF0b3JzKTsK
KyAgICBpbmZvLnJlcG9ydEhhc2hTZXQobV9yYW5nZXMpOworICAgIGluZm8ucmVwb3J0TGlzdEhh
c2hTZXQobV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMpOworICAgIGluZm8ucmVwb3J0U3RyaW5n
KG1fcHJlZmVycmVkU3R5bGVzaGVldFNldCk7CisgICAgaW5mby5yZXBvcnRTdHJpbmcobV9zZWxl
Y3RlZFN0eWxlc2hlZXRTZXQpOworICAgIGluZm8ucmVwb3J0U3RyaW5nKG1fdGl0bGUuc3RyaW5n
KCkpOworICAgIGluZm8ucmVwb3J0U3RyaW5nKG1fcmF3VGl0bGUuc3RyaW5nKCkpOworICAgIGlu
Zm8ucmVwb3J0U3RyaW5nKG1feG1sRW5jb2RpbmcpOworICAgIGluZm8ucmVwb3J0U3RyaW5nKG1f
eG1sVmVyc2lvbik7CisgICAgaW5mby5yZXBvcnRTdHJpbmcobV9jb250ZW50TGFuZ3VhZ2UpOwor
ICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX2RvY3VtZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMpOwor
ICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX3dpbmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zKTsKICNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
VmVjdG9yKG1fZGFzaGJvYXJkUmVnaW9ucyk7CisgICAgaW5mby5yZXBvcnRWZWN0b3IobV9kYXNo
Ym9hcmRSZWdpb25zKTsKICNlbmRpZgotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hN
YXAobV9jc3NDYW52YXNFbGVtZW50cyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVj
dG9yKG1faWNvblVSTHMpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hTZXQobV9k
b2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRIYXNoU2V0KG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzKTsKLSAgICBtZW1v
cnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoU2V0KG1fcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
RWxlbWVudHMpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9lbGVtZW50
c0J5QWNjZXNzS2V5KTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoU2V0KG1fbWVk
aWFDYW5TdGFydExpc3RlbmVycyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVjdG9y
KG1fcGVuZGluZ1Rhc2tzKTsKKyAgICBpbmZvLnJlcG9ydEhhc2hNYXAobV9jc3NDYW52YXNFbGVt
ZW50cyk7CisgICAgaW5mby5yZXBvcnRWZWN0b3IobV9pY29uVVJMcyk7CisgICAgaW5mby5yZXBv
cnRIYXNoU2V0KG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cyk7CisgICAgaW5m
by5yZXBvcnRIYXNoU2V0KG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzKTsKKyAgICBpbmZv
LnJlcG9ydEhhc2hTZXQobV9wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRFbGVtZW50cyk7Cisg
ICAgaW5mby5yZXBvcnRIYXNoTWFwKG1fZWxlbWVudHNCeUFjY2Vzc0tleSk7CisgICAgaW5mby5y
ZXBvcnRIYXNoU2V0KG1fbWVkaWFDYW5TdGFydExpc3RlbmVycyk7CisgICAgaW5mby5yZXBvcnRW
ZWN0b3IobV9wZW5kaW5nVGFza3MpOwogfQogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IGJlMzA1MmFkODE5MDFjOWNlMDJmNDc2NTIyN2JmODI2YzljYTMz
ZTQuLjU2N2Y5M2VmZjJiODU1MzhlNzU0ODdlZDk5MjgzNmM5YmFkZWM4YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtNDMwLDEwICs0MzAsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiAgICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRo
aXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgQ29udGFpbmVyTm9kZTo6
cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtX3RhZ05hbWUpOwotICAgICAgICBtZW1v
cnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlRGF0YS5n
ZXQoKSk7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxFbGVtZW50PiBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgaW5mby52
aXNpdEJhc2VDbGFzczxDb250YWluZXJOb2RlPih0aGlzKTsKKyAgICAgICAgaW5mby5yZXBvcnRJ
bnN0cnVtZW50ZWRPYmplY3QobV90YWdOYW1lKTsKKyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVt
ZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlRGF0YS5nZXQoKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCmluZGV4IDg2NDY2ZmRi
MWVlZDdmMTNmZjAwZWE1MTc4NmE2MjI3YWNjMjczN2MuLmZhZDU1ZjliNzVjNWVhZGFjMTU1Njdh
OTFjOWI4ODBhNTE3OTY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QXR0cmlidXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRl
RGF0YS5oCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAg
ewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
SW5zdHJ1bWVudGVkUG9pbnRlcihtX2lubGluZVN0eWxlRGVjbC5nZXQoKSk7Ci0gICAgICAgIG1l
bW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9hdHRyaWJ1dGVTdHls
ZS5nZXQoKSk7Ci0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX2NsYXNz
TmFtZXMpOwotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9pZEZvclN0
eWxlUmVzb2x1dGlvbik7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxFbGVtZW50QXR0cmlidXRl
RGF0YT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSk7CisgICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2lubGluZVN0
eWxlRGVjbC5nZXQoKSk7CisgICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlciht
X2F0dHJpYnV0ZVN0eWxlLmdldCgpKTsKKyAgICAgICAgaW5mby5yZXBvcnRPYmplY3QobV9jbGFz
c05hbWVzKTsKKyAgICAgICAgaW5mby5yZXBvcnRPYmplY3QobV9pZEZvclN0eWxlUmVzb2x1dGlv
bik7CiAgICAgICAgIGlmIChtX2lzTXV0YWJsZSkKLSAgICAgICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydFBvaW50ZXIobV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkRPTSk7CisgICAgICAgICAgICBpbmZvLnJlcG9ydFBvaW50ZXIobV9tdXRhYmxl
QXR0cmlidXRlVmVjdG9yKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggN2EwZDQxYzUwNTBiMDkxMWRmYjQ0NTgzMjVh
Mzg5MTc1ZWMxNWEzZS4uZDZmMTEzYjNhM2YwMjZiMjlmY2UxYWJmYzY5OTNmODg2ZmY2ZGQzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtODEsOCAr
ODEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBN
ZW1vcnlPYmplY3RJbmZvOwotCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBjbGFz
cyBNZW1vcnlDbGFzc0luZm87CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgY2xhc3Mg
SW5zdHJ1bWVudGVkUG9pbnRlciA6IHB1YmxpYyBJbnN0cnVtZW50ZWRQb2ludGVyQmFzZSB7CiAg
ICAgcHVibGljOgpAQCAtMTA4LDI5ICsxMDcsMTUgQEAgcHVibGljOgogICAgICAgICAsIG1fb2Jq
ZWN0U2l6ZSgwKQogICAgICB7IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgotICAgIHZv
aWQgcmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihjb25zdCBQKiBtZW1iZXJQb2ludGVyKQotICAg
IHsKLSAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydEluc3RydW1lbnRlZFBv
aW50ZXIobWVtYmVyUG9pbnRlcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+
Ci0gICAgdm9pZCByZXBvcnRQb2ludGVyKGNvbnN0IFAqIHBvaW50ZXIsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKQotICAgIHsKLSAgICAgICAgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPnJlcG9ydFBvaW50ZXIocG9pbnRlciwgb2JqZWN0VHlwZSk7Ci0gICAg
fQorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CisgICAgc2l6ZV90IG9iamVjdFNpemUoKSBjb25z
dCB7IHJldHVybiBtX29iamVjdFNpemU7IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
ICAgIHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmIG1lbWJlck9iamVjdCkK
LSAgICB7Ci0gICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50
ZWRPYmplY3QobWVtYmVyT2JqZWN0KTsKLSAgICB9CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBtZW1vcnlJbnN0cnVtZW50YXRpb24oKSB7IHJldHVybiBtX21lbW9yeUluc3RydW1lbnRhdGlv
bjsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZXBvcnRPYmplY3Qo
Y29uc3QgVCYgb2JqZWN0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRPYmplY3Qo
b2JqZWN0KTsgfQorcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIGNs
YXNzIE1lbW9yeUNsYXNzSW5mbzsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZv
aWQgcmVwb3J0T2JqZWN0SW5mbyhjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RUeXBlIG9iamVjdFR5cGUpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgcmVwb3J0
T2JqZWN0SW5mbyhjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9i
amVjdFR5cGUpCiAgICAgewogICAgICAgICBpZiAobV9vYmplY3RUeXBlICE9IE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6T3RoZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzgsNDQgKzEyMyw0
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fb2JqZWN0U2l6ZSA9IHNpemVvZihUKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+Ci0gICAgdm9pZCByZXBvcnRIYXNo
TWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBtYXApCi0gICAgewotICAgICAgICBtX21lbW9yeUluc3Ry
dW1lbnRhdGlvbi0+cmVwb3J0SGFzaE1hcChtYXAsIG9iamVjdFR5cGUoKSwgdHJ1ZSk7Ci0gICAg
fQorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1vcnlJbnN0cnVtZW50YXRpb247Cisg
ICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG1fb2JqZWN0VHlwZTsKKyAgICBz
aXplX3QgbV9vYmplY3RTaXplOworfTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0
VHlwZT4KLSAgICB2b2lkIHJlcG9ydEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIHNldCkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgTWVtb3J5Q2xhc3NJbmZvIHsKK3B1YmxpYzoKKyAg
ICBNZW1vcnlDbGFzc0luZm8oTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbywgY29u
c3QgVCogcHRyLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSkK
KyAgICAgICAgOiBtX21lbW9yeU9iamVjdEluZm8obWVtb3J5T2JqZWN0SW5mbykKKyAgICAgICAg
LCBtX21lbW9yeUluc3RydW1lbnRhdGlvbihtZW1vcnlPYmplY3RJbmZvLT5tZW1vcnlJbnN0cnVt
ZW50YXRpb24oKSkKICAgICB7Ci0gICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBv
cnRIYXNoU2V0KHNldCwgb2JqZWN0VHlwZSgpLCB0cnVlKTsKKyAgICAgICAgbV9tZW1vcnlPYmpl
Y3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHB0ciwgb2JqZWN0VHlwZSk7CisgICAgICAgIG1fb2Jq
ZWN0VHlwZSA9IG1lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPgotICAgIHZvaWQgcmVwb3J0TGlzdEhh
c2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBzZXQpCi0gICAgewotICAgICAgICBtX21lbW9y
eUluc3RydW1lbnRhdGlvbi0+cmVwb3J0TGlzdEhhc2hTZXQoc2V0LCBvYmplY3RUeXBlKCksIHRy
dWUpOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4gdm9pZCB2aXNpdEJhc2VDbGFz
cyhjb25zdCBQKiBwdHIpIHsgcHRyLT5QOjpyZXBvcnRNZW1vcnlVc2FnZShtX21lbW9yeU9iamVj
dEluZm8pOyB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAgICB2b2lk
IHJlcG9ydFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpCi0gICAgewotICAgICAgICBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0VmVjdG9yKHZlY3Rvciwgb2JqZWN0VHlwZSgp
LCB0cnVlKTsKLSAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+IHZvaWQgcmVwb3J0SW5z
dHJ1bWVudGVkUG9pbnRlcihjb25zdCBQKiBtZW1iZXJQb2ludGVyKSB7IG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1lbWJlclBvaW50ZXIpOyB9Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE8+IHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KGNv
bnN0IE8mIG1lbWJlck9iamVjdCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0SW5z
dHJ1bWVudGVkT2JqZWN0KG1lbWJlck9iamVjdCk7IH0KIAotICAgIHZvaWQgcmVwb3J0U3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAgIHsKLSAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPnJlcG9ydFN0cmluZyhvYmplY3RUeXBlKCksIHN0cmluZyk7Ci0gICAgfQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBQPiB2b2lkIHJlcG9ydFBvaW50ZXIoY29uc3QgUCogcG9pbnRlcikg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0UG9pbnRlcihwb2ludGVyLCBtX29iamVj
dFR5cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE8+IHZvaWQgcmVwb3J0T2JqZWN0KGNv
bnN0IE8mIG9iamVjdCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0T2JqZWN0KG9i
amVjdCk7IH0KIAotICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9Ci0gICAgc2l6ZV90IG9iamVjdFNp
emUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFNpemU7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSGFzaE1hcFR5cGU+IHZvaWQgcmVwb3J0SGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFw
KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRIYXNoTWFwKG1hcCwgbV9vYmplY3RU
eXBlLCB0cnVlKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBy
ZXBvcnRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPnJlcG9ydEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCByZXBvcnRMaXN0SGFzaFNldChj
b25zdCBMaXN0SGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVw
b3J0TGlzdEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgcmVwb3J0VmVjdG9yKGNvbnN0IFZlY3RvclR5cGUm
IHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0VmVjdG9yKHZlY3Rvciwg
bV9vYmplY3RUeXBlLCB0cnVlKTsgfQogCi0gICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1v
cnlJbnN0cnVtZW50YXRpb24oKSB7IHJldHVybiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsgfQor
ICAgIHZvaWQgcmVwb3J0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5yZXBvcnRTdHJpbmcobV9vYmplY3RUeXBlLCBzdHJpbmcpOyB9CiAKLSBw
cml2YXRlOgorcHJpdmF0ZToKKyAgICBNZW1vcnlPYmplY3RJbmZvKiBtX21lbW9yeU9iamVjdElu
Zm87CiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsK
ICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgbV9vYmplY3RUeXBlOwotICAg
IHNpemVfdCBtX29iamVjdFNpemU7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCA5ZDgzYzk3ZTk1N2VkNDkxOGE2M2ZmZmQzMGVlMWU0ODY1OTJkMTc0Li45
MzQ4MWEzM2I5MTkwYjkyNTk5MjBhMmM0ZWI1MjExZmE2NGI4NjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yODAxLDEyICsyODAxLDEyIEBAIHZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogCiB2
b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiB7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Ci0gICAgVHJlZVNoYXJlZDxOb2RlLCBD
b250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAg
U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fZG9jdW1lbnQsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6RE9NKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50
ZWRQb2ludGVyKG1fbmV4dCk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVu
dGVkUG9pbnRlcihtX3ByZXZpb3VzKTsKKyAgICBNZW1vcnlDbGFzc0luZm88Tm9kZT4gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAg
aW5mby52aXNpdEJhc2VDbGFzczxUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+ID4odGhp
cyk7CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxTY3JpcHRXcmFwcGFibGU+KHRoaXMpOworICAg
IGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2RvY3VtZW50KTsKKyAgICBpbmZvLnJl
cG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9uZXh0KTsKKyAgICBpbmZvLnJlcG9ydEluc3RydW1l
bnRlZFBvaW50ZXIobV9wcmV2aW91cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDE5MDdiODc3NGI2N2NlMTkwODVlOWNhNmNm
NWQzOWZkNGMzYjQ3NmEuLjI4NDVlNzc1OWFmNTAwMzIzNzNiNDE0NDhjMTkyNmFhN2VhN2U2NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtNTIsMTEgKzUyLDExIEBAIHB1Ymxp
YzoKIAogICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00p
OwotICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fcHJlZml4KTsK
LSAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX2xvY2FsTmFtZSk7
Ci0gICAgICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9uYW1lc3BhY2Up
OwotICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fbG9jYWxOYW1l
VXBwZXIpOworICAgICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFF1YWxpZmllZE5hbWVJbXBsPiBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsK
KyAgICAgICAgICAgIGluZm8ucmVwb3J0T2JqZWN0KG1fcHJlZml4KTsKKyAgICAgICAgICAgIGlu
Zm8ucmVwb3J0T2JqZWN0KG1fbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGluZm8ucmVwb3J0T2Jq
ZWN0KG1fbmFtZXNwYWNlKTsKKyAgICAgICAgICAgIGluZm8ucmVwb3J0T2JqZWN0KG1fbG9jYWxO
YW1lVXBwZXIpOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUXVhbGlmaWVkTmFt
ZUltcGwoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKQEAgLTEwNCw4ICsxMDQs
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKLSAgICAgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRP
TSk7Ci0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIo
bV9pbXBsKTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFF1YWxpZmllZE5hbWU+IGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAg
ICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9pbXBsKTsKICAgICB9CiBwcml2YXRl
OgogICAgIHZvaWQgaW5pdChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRleCA2YzQxNTRlZGU3YWM5NzI4MmI1NDc2
OTU4MzkzM2JmNDY2M2YxNDgyLi40NGRjMTZmYmZhOGQxNjI2YWZkMGZkYmQyMDNiMmU2OWNlZmI2
NTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCkBAIC0xMTMsOCArMTEzLDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Ci0g
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9wYXJl
bnQpOworICAgICAgICBNZW1vcnlDbGFzc0luZm88VHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50
Tm9kZVR5cGU+ID4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSk7CisgICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3Bh
cmVudCk7CiAgICAgfQogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152258</attachid>
            <date>2012-07-13 07:34:25 -0700</date>
            <delta_ts>2012-07-13 08:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91227-20120713183423.patch</filename>
            <type>text/plain</type>
            <size>27500</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY5YTdkZGE3ZmEwZTk5
ZWE3NjBlMjQ5ZTNkYWY5ZjhiOWQ4ZDY3MS4uNTljODJkOTQ1Mjk0NGMzZTUxMmJiOTQ1NTZhMWI5
YmFiZDI3NGQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA3LTEzICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBuYXRpdmUgbWVtb3J5IGluc3RydW1lbnRhdGlvbjogZXh0cmFjdCBpbnN0cnVtZW50YXRp
b24gbWV0aG9kcyBpbnRvIE1lbW9yeUNsYXNzSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIE1lbW9yeUNsYXNzSW5mbzxOb2RlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgICAgIGluZm8udmlzaXRCYXNlQ2xh
c3M8U2NyaXB0V3JhcHBhYmxlPih0aGlzKTsKKworICAgICAgICAgICAgaW5mby5hZGRNZW1iZXIo
bV9ub3RJbnN0cnVtZW50ZWRQb2ludGVyKTsgLy8gYXV0b21hdGljYWxseSBkZXRlY3RzIHBvbml0
ZXIvcmVmZXJlbmNlCisgICAgICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX25l
eHQpOworICAgICAgICAgICAgaW5mby5hZGRIYXNoU2V0PE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Tm9uQ2xhc3M+KG1fYUhhc2gpOyAgICAgICAgICAgICAgICAvLyBOb25DbGFzcyB2YWx1ZV90eXBl
IChyZXBvcnQgb25seSBzaXplIG9mIGludGVybmFsIHRlbXBsYXRlIHN0cnVjdHVyZXMpCisgICAg
ICAgICAgICBpbmZvLmFkZEhhc2hTZXQ8TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpOb3RJbnN0cnVt
ZW50ZWRDbGFzcz4obV9hSGFzaFNldCk7IC8vIG5vdCBpbnN0cnVtZW50ZWQgdmFsdWVfdHlwZSAo
dXNlIHNpemVvZikKKyAgICAgICAgICAgIGluZm8uYWRkSGFzaFNldDxNZW1vcnlJbnN0cnVtZW50
YXRpb246Okluc3RydW1lbnRlZENsYXNzPihtX2FIYXNoU2V0KTsgICAgLy8gaW5zdHJ1bWVudGVk
IHZhbHVlX3R5cGUgKGNhbGwgdmlzaXQpCisgICAgICAgIH0KKworICAgICAgICBUaGUgY2hhbmdl
IGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgZm9yIG5hdGl2ZSBtZW1vcnkgc25hcHNob3Qu
CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2h1bmtl
ZFRhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
V3JhcHBhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0
eVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNoYXJhY3RlckRhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwb3J0TWVt
b3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9NZW1vcnlJ
bnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmplY3RUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Om9iamVjdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5T2JqZWN0SW5mbzo6bWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKE1lbW9y
eU9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6cmVwb3J0
T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86Ok1lbW9yeUNsYXNzSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnZpc2l0QmFzZUNsYXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydEluc3RydW1lbnRl
ZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydFBvaW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xhc3NJbmZvOjpyZXBvcnRPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xhc3NJbmZvOjpyZXBvcnRIYXNoTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0SGFzaFNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OnJlcG9ydExpc3RIYXNoU2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNsYXNzSW5mbzo6cmVwb3J0U3RyaW5nKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
ZG9tL1F1YWxpZmllZE5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OlF1
YWxpZmllZE5hbWVJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpR
dWFsaWZpZWROYW1lOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vVHJl
ZVNoYXJlZC5oOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6cmVwb3J0TWVtb3J5VXNh
Z2UpOgorCiAyMDEyLTA3LTEzICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgogICAg
ICAgICBbQ1NTIFJlZ2lvbnNdIEZpeCBidWlsZCBmb3IgYnVnIDg5MDAwCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAppbmRleCAyZDkyYmI0NTViMzIyODIzYmU2
ZTEwNDAyMmU3MTUyZGU4MWQ4OWE3Li45NDc3OTRkYzJmNGQ0YTIwYTI1MTY3YmE2MmZhZDdiOGE0
MmNjMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUu
aApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgewotICAgICAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6RE9NKTsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1f
d3JhcHBlcik7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxTY3JpcHRXcmFwcGFibGU+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAg
ICAgICBpbmZvLnJlcG9ydE9iamVjdChtX3dyYXBwZXIpOwogICAgIH0KIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCmluZGV4IDk1ZWZkNTA1
OTdlMDhiOGMxYTNhMDU2NDE1NjBmMTcxYTI1MjBjZjAuLjAyMWE3YzgxMTkxM2JlMzgwMGRjYzUz
NTk3YjAxMmVhNzE3YTc2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmNwcApAQCAtMTIxLDExICsxMjEsMTEgQEAgdm9pZCogRE9NRGF0YVN0b3JlOjpnZXRE
T01XcmFwcGVyTWFwKERPTVdyYXBwZXJNYXBUeXBlIHR5cGUpCiAKIHZvaWQgRE9NRGF0YVN0b3Jl
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fZG9tTm9kZU1hcCk7Ci0gICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2FjdGl2ZURvbU5vZGVNYXApOwotICAgIG1l
bW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21PYmplY3RNYXAp
OwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9hY3Rp
dmVEb21PYmplY3RNYXApOworICAgIE1lbW9yeUNsYXNzSW5mbzxET01EYXRhU3RvcmU+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsK
KyAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21Ob2RlTWFwKTsKKyAgICBp
bmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9hY3RpdmVEb21Ob2RlTWFwKTsKKyAgICBp
bmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21PYmplY3RNYXApOworICAgIGluZm8u
cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2FjdGl2ZURvbU9iamVjdE1hcCk7CiB9CiAKIC8v
IENhbGxlZCB3aGVuIHRoZSBvYmplY3QgaXMgbmVhciBkZWF0aCAobm90IHJlYWNoYWJsZSBmcm9t
IEpTIHJvb3RzKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1
c2l2ZURPTVdyYXBwZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2
ZURPTVdyYXBwZXJNYXAuaAppbmRleCA1MjMwOGJkYzQzZGU1NjkwOGIwMDhiODQwMjlkOGIzMzc3
MjAyY2QxLi5lMDcyOGMyOTViY2U3OGI5ZjViZWNjNjQ0NmNmM2RmODFlYTFjNjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5o
CkBAIC0xMDQsOSArMTA0LDkgQEAgY2xhc3MgQ2h1bmtlZFRhYmxlIHsKIAogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
ICAgICB7Ci0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZv
PENodW5rZWRUYWJsZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkJpbmRpbmcpOwogICAgICAgICBmb3IgKENodW5rKiBjaHVuayA9IG1fY2h1bmtz
OyBjaHVuazsgY2h1bmsgPSBjaHVuay0+bV9wcmV2aW91cykKLSAgICAgICAgICAgIG1lbW9yeU9i
amVjdEluZm8tPnJlcG9ydFBvaW50ZXIoY2h1bmssIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Qmlu
ZGluZyk7CisgICAgICAgICAgICBpbmZvLnJlcG9ydFBvaW50ZXIoY2h1bmspOwogICAgIH0KIAog
ICBwcml2YXRlOgpAQCAtMTg2LDggKzE4Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpOwotICAgICAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QobV90YWJsZSk7CisgICAg
ICAgIE1lbW9yeUNsYXNzSW5mbzxJbnRydXNpdmVET01XcmFwcGVyTWFwPiBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7CisgICAgICAg
IGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KG1fdGFibGUpOwogICAgIH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJs
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKaW5kZXgg
MWMyODIzMjE2MTVhZGY4ODYxNzk0OGViM2IyMDc1MGQ3MGZjOWQ0OS4uOGYwYmNkYmQ4ZjY0NDE4
ZTA5Njg3YjQ4YmZkYjQwY2NkYjY5ZDE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0V3JhcHBhYmxlLmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogICAgIHsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Ci0gICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydFBvaW50ZXIobV93cmFwcGVyLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7
CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxTY3JpcHRXcmFwcGFibGU+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBpbmZv
LnJlcG9ydFBvaW50ZXIobV93cmFwcGVyKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA4MTk4YWQwZDZhYzFlOTk1NDliMGFj
MWUxMzk4ZmYyMWYwNGQ5MjE0Li40Yzc2NjIxYzkwNGNkZDc0MWJiM2Y5ZTc1NDMxYWNkM2EyZWEw
OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTkyLDE0
ICs5MiwxNCBAQCB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkaXNwb3NlKHY4OjpJc29s
YXRlKiBpc29sYXRlKQogCiB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewotICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpCaW5kaW5nKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoTWFwKG1f
cmF3VGVtcGxhdGVzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoTWFwKG1fdGVt
cGxhdGVzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRPYmplY3Qo
bV9zdHJpbmdDYWNoZSk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVjdG9yKG1fZG9t
RGF0YUxpc3QpOworICAgIE1lbW9yeUNsYXNzSW5mbzxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YT4g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRp
bmcpOworICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX3Jhd1RlbXBsYXRlcyk7CisgICAgaW5mby5y
ZXBvcnRIYXNoTWFwKG1fdGVtcGxhdGVzKTsKKyAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZE9i
amVjdChtX3N0cmluZ0NhY2hlKTsKKyAgICBpbmZvLnJlcG9ydFZlY3RvcihtX2RvbURhdGFMaXN0
KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kb21EYXRhTGlzdC5zaXplKCk7IGkr
KykKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlciht
X2RvbURhdGFMaXN0W2ldKTsKKyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVy
KG1fZG9tRGF0YUxpc3RbaV0pOwogfQogCiAvLyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgaXMgYSBo
ZWxwZXIgY2xhc3MgZm9yIHY4RXh0ZXJuYWxTdHJpbmcuIEl0IGlzIHVzZWQKQEAgLTU5MCw4ICs1
OTAsOCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VG9TdHJpbmdU
ZW1wbGF0ZSgpCiAKIHZvaWQgU3RyaW5nQ2FjaGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7Ci0gICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcp
OwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9zdHJpbmdDYWNoZSk7Cisg
ICAgTWVtb3J5Q2xhc3NJbmZvPFN0cmluZ0NhY2hlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7CisgICAgaW5mby5yZXBvcnRIYXNo
TWFwKG1fc3RyaW5nQ2FjaGUpOwogfQogICAgIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2
OFZhbHVlVG9XZWJDb3JlRE9NU3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAppbmRleCAyYjcwYzU4MmI2ZTVjNzlm
ZWI5YzU5NDZlYjZlMzM2ZWFlOGNkN2QxLi5hYTE5MDE3MDIwN2IwN2QxMjEzNTA0Mjk3ZTUxMzhl
Y2Y1NjE2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1h
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKQEAgLTEzNiw4
ICsxMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
IE9WRVJSSURFCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9y
dE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKLSAgICAg
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9tYXApOworICAgICAgICAg
ICAgTWVtb3J5Q2xhc3NJbmZvPFdlYWtSZWZlcmVuY2VNYXA8S2V5VHlwZSwgVmFsdWVUeXBlPiA+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5k
aW5nKTsKKyAgICAgICAgICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX21hcCk7CiAgICAgICAgIH0K
IAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4
IDZkMDc5MDkyNTg5ZDRkOGY2OTdmZDZmMjAxMDkxMDYyYzY4NTI2MGYuLmRhNTAxM2QxMGQwYTZl
YjAxYzVmYTg1MGIyMDZkMGE3OTM5MWRmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuaApAQCAtMTE4LDkgKzExOCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAg
ICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFN0eWxl
UHJvcGVydHlTZXQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOwogICAgICAgICBpZiAobV9pc011dGFibGUpCi0gICAgICAgICAgICBtZW1v
cnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fbXV0YWJsZVByb3BlcnR5VmVjdG9yLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgICAgICAgICBpbmZvLnJlcG9ydFBvaW50ZXIo
bV9tdXRhYmxlUHJvcGVydHlWZWN0b3IpOwogICAgIH0KIAogICAgIHZvaWQgYWRvcHRDU1NPTVdy
YXBwZXJGcm9tKFN0eWxlUHJvcGVydHlTZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcAppbmRleCAyMjVhMTM5OWRlMjU2NjczZTE3ODVhNzAwMmU1MWE4MDgzZDhlNDAwLi4zOTVl
ZmZhMmQ3NjhhNzg4N2EyOTVlNDU3YWQ2OTEyY2NjYjJhYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCkBAIC05NCw5ICs5NCw5IEBAIHVuc2lnbmVkIENoYXJhY3RlckRhdGE6
OnBhcnNlckFwcGVuZERhdGEoY29uc3QgVUNoYXIqIGRhdGEsIHVuc2lnbmVkIGRhdGFMZW5ndGgs
CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICBOb2Rl
OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBtZW1vcnlPYmplY3RJ
bmZvLT5yZXBvcnRTdHJpbmcobV9kYXRhKTsKKyAgICBNZW1vcnlDbGFzc0luZm88Q2hhcmFjdGVy
RGF0YT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSk7CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxOb2RlPih0aGlzKTsKKyAgICBpbmZvLnJl
cG9ydFN0cmluZyhtX2RhdGEpOwogfQogCiB2b2lkIENoYXJhY3RlckRhdGE6OmFwcGVuZERhdGEo
Y29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCmluZGV4IDVmNTVjN2JlYjQ4ZDA0MjIyYTU2MDcxYTVkYTkwNzdiMjIxOWYyNWUuLmZj
Mjc1MWU5ZGMwOTU1OGE2ZDBmYTAxMTg4NGNmNWJiMTFmZGJiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaApAQCAtMTAxLDEwICsxMDEsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiAgICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJ
bmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgTm9kZTo6cmVw
b3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9maXJzdENoaWxkKTsKLSAgICAgICAgbWVt
b3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2xhc3RDaGlsZCk7Cisg
ICAgICAgIE1lbW9yeUNsYXNzSW5mbzxDb250YWluZXJOb2RlPiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgaW5mby52aXNp
dEJhc2VDbGFzczxOb2RlPih0aGlzKTsKKyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQ
b2ludGVyKG1fZmlyc3RDaGlsZCk7CisgICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9p
bnRlcihtX2xhc3RDaGlsZCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCAyOTA2ZjRlOTRlN2ZkMGM0Y2FmNTVkNTlmM2ExYjhiNWQyZjliMzRlLi5kN2Jj
MzI4N2FiNGJlZDAxYWUyMTJkYTBhM2Q5NzhiOTE5ZDMzYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTYwNzUsMzggKzYwNzUsMzggQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGV4dEZl
YXR1cmVzKFBhc3NSZWZQdHI8Q29udGV4dEZlYXR1cmVzPiBmZWF0dXJlcykKIAogdm9pZCBEb2N1
bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKIHsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICBDb250YWluZXJOb2RlOjpyZXBvcnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRWZWN0b3IobV9jdXN0b21Gb250cyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3Ry
aW5nKG1fZG9jdW1lbnRVUkkpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFN0cmluZyht
X2Jhc2VUYXJnZXQpOworICAgIE1lbW9yeUNsYXNzSW5mbzxEb2N1bWVudD4gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgaW5mby52
aXNpdEJhc2VDbGFzczxDb250YWluZXJOb2RlPih0aGlzKTsKKyAgICBpbmZvLnJlcG9ydFZlY3Rv
cihtX2N1c3RvbUZvbnRzKTsKKyAgICBpbmZvLnJlcG9ydFN0cmluZyhtX2RvY3VtZW50VVJJKTsK
KyAgICBpbmZvLnJlcG9ydFN0cmluZyhtX2Jhc2VUYXJnZXQpOwogICAgIGlmIChtX3BhZ2VHcm91
cFVzZXJTaGVldHMpCi0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFZlY3RvcigqbV9w
YWdlR3JvdXBVc2VyU2hlZXRzLmdldCgpKTsKKyAgICAgICAgaW5mby5yZXBvcnRWZWN0b3IoKm1f
cGFnZUdyb3VwVXNlclNoZWV0cy5nZXQoKSk7CiAgICAgaWYgKG1fdXNlclNoZWV0cykKLSAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVjdG9yKCptX3VzZXJTaGVldHMuZ2V0KCkpOwot
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hTZXQobV9ub2RlSXRlcmF0b3JzKTsKLSAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoU2V0KG1fcmFuZ2VzKTsKLSAgICBtZW1vcnlP
YmplY3RJbmZvLT5yZXBvcnRMaXN0SGFzaFNldChtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcyk7
Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fcHJlZmVycmVkU3R5bGVzaGVl
dFNldCk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fc2VsZWN0ZWRTdHls
ZXNoZWV0U2V0KTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV90aXRsZS5z
dHJpbmcoKSk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fcmF3VGl0bGUu
c3RyaW5nKCkpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFN0cmluZyhtX3htbEVuY29k
aW5nKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV94bWxWZXJzaW9uKTsK
LSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV9jb250ZW50TGFuZ3VhZ2UpOwot
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9kb2N1bWVudE5hbWVkSXRlbUNv
bGxlY3Rpb25zKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoTWFwKG1fd2luZG93
TmFtZWRJdGVtQ29sbGVjdGlvbnMpOworICAgICAgICBpbmZvLnJlcG9ydFZlY3RvcigqbV91c2Vy
U2hlZXRzLmdldCgpKTsKKyAgICBpbmZvLnJlcG9ydEhhc2hTZXQobV9ub2RlSXRlcmF0b3JzKTsK
KyAgICBpbmZvLnJlcG9ydEhhc2hTZXQobV9yYW5nZXMpOworICAgIGluZm8ucmVwb3J0TGlzdEhh
c2hTZXQobV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMpOworICAgIGluZm8ucmVwb3J0U3RyaW5n
KG1fcHJlZmVycmVkU3R5bGVzaGVldFNldCk7CisgICAgaW5mby5yZXBvcnRTdHJpbmcobV9zZWxl
Y3RlZFN0eWxlc2hlZXRTZXQpOworICAgIGluZm8ucmVwb3J0U3RyaW5nKG1fdGl0bGUuc3RyaW5n
KCkpOworICAgIGluZm8ucmVwb3J0U3RyaW5nKG1fcmF3VGl0bGUuc3RyaW5nKCkpOworICAgIGlu
Zm8ucmVwb3J0U3RyaW5nKG1feG1sRW5jb2RpbmcpOworICAgIGluZm8ucmVwb3J0U3RyaW5nKG1f
eG1sVmVyc2lvbik7CisgICAgaW5mby5yZXBvcnRTdHJpbmcobV9jb250ZW50TGFuZ3VhZ2UpOwor
ICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX2RvY3VtZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMpOwor
ICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX3dpbmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zKTsKICNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
VmVjdG9yKG1fZGFzaGJvYXJkUmVnaW9ucyk7CisgICAgaW5mby5yZXBvcnRWZWN0b3IobV9kYXNo
Ym9hcmRSZWdpb25zKTsKICNlbmRpZgotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hN
YXAobV9jc3NDYW52YXNFbGVtZW50cyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVj
dG9yKG1faWNvblVSTHMpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hTZXQobV9k
b2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRzKTsKLSAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRIYXNoU2V0KG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzKTsKLSAgICBtZW1v
cnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoU2V0KG1fcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
RWxlbWVudHMpOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEhhc2hNYXAobV9lbGVtZW50
c0J5QWNjZXNzS2V5KTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoU2V0KG1fbWVk
aWFDYW5TdGFydExpc3RlbmVycyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0VmVjdG9y
KG1fcGVuZGluZ1Rhc2tzKTsKKyAgICBpbmZvLnJlcG9ydEhhc2hNYXAobV9jc3NDYW52YXNFbGVt
ZW50cyk7CisgICAgaW5mby5yZXBvcnRWZWN0b3IobV9pY29uVVJMcyk7CisgICAgaW5mby5yZXBv
cnRIYXNoU2V0KG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cyk7CisgICAgaW5m
by5yZXBvcnRIYXNoU2V0KG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzKTsKKyAgICBpbmZv
LnJlcG9ydEhhc2hTZXQobV9wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRFbGVtZW50cyk7Cisg
ICAgaW5mby5yZXBvcnRIYXNoTWFwKG1fZWxlbWVudHNCeUFjY2Vzc0tleSk7CisgICAgaW5mby5y
ZXBvcnRIYXNoU2V0KG1fbWVkaWFDYW5TdGFydExpc3RlbmVycyk7CisgICAgaW5mby5yZXBvcnRW
ZWN0b3IobV9wZW5kaW5nVGFza3MpOwogfQogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IGJlMzA1MmFkODE5MDFjOWNlMDJmNDc2NTIyN2JmODI2YzljYTMz
ZTQuLjU2N2Y5M2VmZjJiODU1MzhlNzU0ODdlZDk5MjgzNmM5YmFkZWM4YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtNDMwLDEwICs0MzAsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiAgICAgewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRo
aXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgQ29udGFpbmVyTm9kZTo6
cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtX3RhZ05hbWUpOwotICAgICAgICBtZW1v
cnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlRGF0YS5n
ZXQoKSk7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxFbGVtZW50PiBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgaW5mby52
aXNpdEJhc2VDbGFzczxDb250YWluZXJOb2RlPih0aGlzKTsKKyAgICAgICAgaW5mby5yZXBvcnRJ
bnN0cnVtZW50ZWRPYmplY3QobV90YWdOYW1lKTsKKyAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVt
ZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlRGF0YS5nZXQoKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCmluZGV4IDg2NDY2ZmRi
MWVlZDdmMTNmZjAwZWE1MTc4NmE2MjI3YWNjMjczN2MuLmZhZDU1ZjliNzVjNWVhZGFjMTU1Njdh
OTFjOWI4ODBhNTE3OTY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QXR0cmlidXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRl
RGF0YS5oCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAg
ewotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
SW5zdHJ1bWVudGVkUG9pbnRlcihtX2lubGluZVN0eWxlRGVjbC5nZXQoKSk7Ci0gICAgICAgIG1l
bW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9hdHRyaWJ1dGVTdHls
ZS5nZXQoKSk7Ci0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX2NsYXNz
TmFtZXMpOwotICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9pZEZvclN0
eWxlUmVzb2x1dGlvbik7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxFbGVtZW50QXR0cmlidXRl
RGF0YT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSk7CisgICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2lubGluZVN0
eWxlRGVjbC5nZXQoKSk7CisgICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlciht
X2F0dHJpYnV0ZVN0eWxlLmdldCgpKTsKKyAgICAgICAgaW5mby5yZXBvcnRPYmplY3QobV9jbGFz
c05hbWVzKTsKKyAgICAgICAgaW5mby5yZXBvcnRPYmplY3QobV9pZEZvclN0eWxlUmVzb2x1dGlv
bik7CiAgICAgICAgIGlmIChtX2lzTXV0YWJsZSkKLSAgICAgICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydFBvaW50ZXIobV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkRPTSk7CisgICAgICAgICAgICBpbmZvLnJlcG9ydFBvaW50ZXIobV9tdXRhYmxl
QXR0cmlidXRlVmVjdG9yKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggN2EwZDQxYzUwNTBiMDkxMWRmYjQ0NTgzMjVh
Mzg5MTc1ZWMxNWEzZS4uZDZmMTEzYjNhM2YwMjZiMjlmY2UxYWJmYzY5OTNmODg2ZmY2ZGQzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtODEsOCAr
ODEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBN
ZW1vcnlPYmplY3RJbmZvOwotCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBjbGFz
cyBNZW1vcnlDbGFzc0luZm87CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgY2xhc3Mg
SW5zdHJ1bWVudGVkUG9pbnRlciA6IHB1YmxpYyBJbnN0cnVtZW50ZWRQb2ludGVyQmFzZSB7CiAg
ICAgcHVibGljOgpAQCAtMTA4LDI5ICsxMDcsMTUgQEAgcHVibGljOgogICAgICAgICAsIG1fb2Jq
ZWN0U2l6ZSgwKQogICAgICB7IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgotICAgIHZv
aWQgcmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihjb25zdCBQKiBtZW1iZXJQb2ludGVyKQotICAg
IHsKLSAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydEluc3RydW1lbnRlZFBv
aW50ZXIobWVtYmVyUG9pbnRlcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+
Ci0gICAgdm9pZCByZXBvcnRQb2ludGVyKGNvbnN0IFAqIHBvaW50ZXIsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKQotICAgIHsKLSAgICAgICAgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPnJlcG9ydFBvaW50ZXIocG9pbnRlciwgb2JqZWN0VHlwZSk7Ci0gICAg
fQorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CisgICAgc2l6ZV90IG9iamVjdFNpemUoKSBjb25z
dCB7IHJldHVybiBtX29iamVjdFNpemU7IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
ICAgIHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmIG1lbWJlck9iamVjdCkK
LSAgICB7Ci0gICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50
ZWRPYmplY3QobWVtYmVyT2JqZWN0KTsKLSAgICB9CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBtZW1vcnlJbnN0cnVtZW50YXRpb24oKSB7IHJldHVybiBtX21lbW9yeUluc3RydW1lbnRhdGlv
bjsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZXBvcnRPYmplY3Qo
Y29uc3QgVCYgb2JqZWN0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRPYmplY3Qo
b2JqZWN0KTsgfQorcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIGNs
YXNzIE1lbW9yeUNsYXNzSW5mbzsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZv
aWQgcmVwb3J0T2JqZWN0SW5mbyhjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RUeXBlIG9iamVjdFR5cGUpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgcmVwb3J0
T2JqZWN0SW5mbyhjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9i
amVjdFR5cGUpCiAgICAgewogICAgICAgICBpZiAobV9vYmplY3RUeXBlICE9IE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6T3RoZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzgsNDQgKzEyMyw0
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fb2JqZWN0U2l6ZSA9IHNpemVvZihUKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+Ci0gICAgdm9pZCByZXBvcnRIYXNo
TWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBtYXApCi0gICAgewotICAgICAgICBtX21lbW9yeUluc3Ry
dW1lbnRhdGlvbi0+cmVwb3J0SGFzaE1hcChtYXAsIG9iamVjdFR5cGUoKSwgdHJ1ZSk7Ci0gICAg
fQorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1vcnlJbnN0cnVtZW50YXRpb247Cisg
ICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG1fb2JqZWN0VHlwZTsKKyAgICBz
aXplX3QgbV9vYmplY3RTaXplOworfTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0
VHlwZT4KLSAgICB2b2lkIHJlcG9ydEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIHNldCkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgTWVtb3J5Q2xhc3NJbmZvIHsKK3B1YmxpYzoKKyAg
ICBNZW1vcnlDbGFzc0luZm8oTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbywgY29u
c3QgVCogcHRyLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSkK
KyAgICAgICAgOiBtX21lbW9yeU9iamVjdEluZm8obWVtb3J5T2JqZWN0SW5mbykKKyAgICAgICAg
LCBtX21lbW9yeUluc3RydW1lbnRhdGlvbihtZW1vcnlPYmplY3RJbmZvLT5tZW1vcnlJbnN0cnVt
ZW50YXRpb24oKSkKICAgICB7Ci0gICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBv
cnRIYXNoU2V0KHNldCwgb2JqZWN0VHlwZSgpLCB0cnVlKTsKKyAgICAgICAgbV9tZW1vcnlPYmpl
Y3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHB0ciwgb2JqZWN0VHlwZSk7CisgICAgICAgIG1fb2Jq
ZWN0VHlwZSA9IG1lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPgotICAgIHZvaWQgcmVwb3J0TGlzdEhh
c2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBzZXQpCi0gICAgewotICAgICAgICBtX21lbW9y
eUluc3RydW1lbnRhdGlvbi0+cmVwb3J0TGlzdEhhc2hTZXQoc2V0LCBvYmplY3RUeXBlKCksIHRy
dWUpOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4gdm9pZCB2aXNpdEJhc2VDbGFz
cyhjb25zdCBQKiBwdHIpIHsgcHRyLT5QOjpyZXBvcnRNZW1vcnlVc2FnZShtX21lbW9yeU9iamVj
dEluZm8pOyB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAgICB2b2lk
IHJlcG9ydFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpCi0gICAgewotICAgICAgICBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0VmVjdG9yKHZlY3Rvciwgb2JqZWN0VHlwZSgp
LCB0cnVlKTsKLSAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+IHZvaWQgcmVwb3J0SW5z
dHJ1bWVudGVkUG9pbnRlcihjb25zdCBQKiBtZW1iZXJQb2ludGVyKSB7IG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1lbWJlclBvaW50ZXIpOyB9Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE8+IHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KGNv
bnN0IE8mIG1lbWJlck9iamVjdCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0SW5z
dHJ1bWVudGVkT2JqZWN0KG1lbWJlck9iamVjdCk7IH0KIAotICAgIHZvaWQgcmVwb3J0U3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAgIHsKLSAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPnJlcG9ydFN0cmluZyhvYmplY3RUeXBlKCksIHN0cmluZyk7Ci0gICAgfQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBQPiB2b2lkIHJlcG9ydFBvaW50ZXIoY29uc3QgUCogcG9pbnRlcikg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0UG9pbnRlcihwb2ludGVyLCBtX29iamVj
dFR5cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE8+IHZvaWQgcmVwb3J0T2JqZWN0KGNv
bnN0IE8mIG9iamVjdCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0T2JqZWN0KG9i
amVjdCk7IH0KIAotICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9Ci0gICAgc2l6ZV90IG9iamVjdFNp
emUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFNpemU7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSGFzaE1hcFR5cGU+IHZvaWQgcmVwb3J0SGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFw
KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRIYXNoTWFwKG1hcCwgbV9vYmplY3RU
eXBlLCB0cnVlKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBy
ZXBvcnRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPnJlcG9ydEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCByZXBvcnRMaXN0SGFzaFNldChj
b25zdCBMaXN0SGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVw
b3J0TGlzdEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgcmVwb3J0VmVjdG9yKGNvbnN0IFZlY3RvclR5cGUm
IHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0VmVjdG9yKHZlY3Rvciwg
bV9vYmplY3RUeXBlLCB0cnVlKTsgfQogCi0gICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1v
cnlJbnN0cnVtZW50YXRpb24oKSB7IHJldHVybiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsgfQor
ICAgIHZvaWQgcmVwb3J0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5yZXBvcnRTdHJpbmcobV9vYmplY3RUeXBlLCBzdHJpbmcpOyB9CiAKLSBw
cml2YXRlOgorcHJpdmF0ZToKKyAgICBNZW1vcnlPYmplY3RJbmZvKiBtX21lbW9yeU9iamVjdElu
Zm87CiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsK
ICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgbV9vYmplY3RUeXBlOwotICAg
IHNpemVfdCBtX29iamVjdFNpemU7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCA5ZDgzYzk3ZTk1N2VkNDkxOGE2M2ZmZmQzMGVlMWU0ODY1OTJkMTc0Li45
MzQ4MWEzM2I5MTkwYjkyNTk5MjBhMmM0ZWI1MjExZmE2NGI4NjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yODAxLDEyICsyODAxLDEyIEBAIHZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogCiB2
b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiB7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Ci0gICAgVHJlZVNoYXJlZDxOb2RlLCBD
b250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAg
U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fZG9jdW1lbnQsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6RE9NKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50
ZWRQb2ludGVyKG1fbmV4dCk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVu
dGVkUG9pbnRlcihtX3ByZXZpb3VzKTsKKyAgICBNZW1vcnlDbGFzc0luZm88Tm9kZT4gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAg
aW5mby52aXNpdEJhc2VDbGFzczxUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+ID4odGhp
cyk7CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxTY3JpcHRXcmFwcGFibGU+KHRoaXMpOworICAg
IGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2RvY3VtZW50KTsKKyAgICBpbmZvLnJl
cG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9uZXh0KTsKKyAgICBpbmZvLnJlcG9ydEluc3RydW1l
bnRlZFBvaW50ZXIobV9wcmV2aW91cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDE5MDdiODc3NGI2N2NlMTkwODVlOWNhNmNm
NWQzOWZkNGMzYjQ3NmEuLjI4NDVlNzc1OWFmNTAwMzIzNzNiNDE0NDhjMTkyNmFhN2VhN2U2NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtNTIsMTEgKzUyLDExIEBAIHB1Ymxp
YzoKIAogICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00p
OwotICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fcHJlZml4KTsK
LSAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX2xvY2FsTmFtZSk7
Ci0gICAgICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9uYW1lc3BhY2Up
OwotICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fbG9jYWxOYW1l
VXBwZXIpOworICAgICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFF1YWxpZmllZE5hbWVJbXBsPiBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsK
KyAgICAgICAgICAgIGluZm8ucmVwb3J0T2JqZWN0KG1fcHJlZml4KTsKKyAgICAgICAgICAgIGlu
Zm8ucmVwb3J0T2JqZWN0KG1fbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGluZm8ucmVwb3J0T2Jq
ZWN0KG1fbmFtZXNwYWNlKTsKKyAgICAgICAgICAgIGluZm8ucmVwb3J0T2JqZWN0KG1fbG9jYWxO
YW1lVXBwZXIpOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUXVhbGlmaWVkTmFt
ZUltcGwoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKQEAgLTEwNCw4ICsxMDQs
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKLSAgICAgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRP
TSk7Ci0gICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIo
bV9pbXBsKTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFF1YWxpZmllZE5hbWU+IGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAg
ICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9pbXBsKTsKICAgICB9CiBwcml2YXRl
OgogICAgIHZvaWQgaW5pdChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRleCA2YzQxNTRlZGU3YWM5NzI4MmI1NDc2
OTU4MzkzM2JmNDY2M2YxNDgyLi40NGRjMTZmYmZhOGQxNjI2YWZkMGZkYmQyMDNiMmU2OWNlZmI2
NTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCkBAIC0xMTMsOCArMTEzLDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKLSAgICAgICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Ci0g
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9wYXJl
bnQpOworICAgICAgICBNZW1vcnlDbGFzc0luZm88VHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50
Tm9kZVR5cGU+ID4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSk7CisgICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3Bh
cmVudCk7CiAgICAgfQogCiBwcml2YXRlOgo=
</data>
<flag name="review"
          id="160913"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>